Nancyラーニング-ステップアップ部分はプラットフォーム間で継続
7177 ワード
前の2編では、Nancyの基礎と、Nancyのホストとビューエンジンについて説明します.
今、いくつかの進級部分を勉強します.
Bootstrapper
今、いくつかの進級部分を勉強します.
Bootstrapper
Bootstrapperはaspに相当する.NetのGlobal.asax .
Bootstrapperをカスタマイズするには、DefaultNancyBootstrapperを継承する必要があります.public class CustomBootstrapper : DefaultNancyBootstrapper
{
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
//
}
}
ApplicationStartupでパラメータやメソッドを初期化したり、グローバル例外を取得したりすることができます.
次に、グローバル例外を取得する方法を見てみましょう. public class CustomBootstrapper:DefaultNancyBootstrapper
{
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines)
{
pipelines.OnError += Error;
}
private dynamic Error(NancyContext context, Exception ex)
{
// log4net ex
return ex.Message;
}
}
The root path
root path GetRootPathは、アプリケーションルートディレクトリを取得できます.
ルートディレクトリを変更することもできます.
ルートディレクトリを変更するには、インタフェースを実装する必要があります:IRootPathProvider
まずIRootPathProvider
インタフェースを実現public class CustomRootPathProvider : IRootPathProvider
{
public string GetRootPath()
{
//
return "C:\\inetpub\\wwwroot";
}
}
そして前のCustomBootstrapper override RootPathProviderでpublic class CustomBootstrapper : DefaultNancyBootstrapper
{
protected override IRootPathProvider RootPathProvider
{
get { return new CustomRootPathProvider(); }
}
}
これにより、アプリケーションルートディレクトリの変更が実現します.
root pathを使用して、上記のファイルを例にします. public HomeModule(IRootPathProvider path)
{
Post["/file"] = r =>
{
var uploadDirectory = Path.Combine(path.GetRootPath(), "uploads");
if (!Directory.Exists(uploadDirectory))
{
Directory.CreateDirectory(uploadDirectory);
}
foreach (var file in Request.Files)
{
var filename = Path.Combine(uploadDirectory, file.Name);
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
{
file.Value.CopyTo(fileStream);
}
}
return HttpStatusCode.OK;
};
}
ルートディレクトリの下にあるuploadsフォルダにファイルをアップロードします.
Managing static content
静的ファイル管理
今、アップロードしたばかりのファイルにアクセスします.画像などはどうすればいいですか.
次に,この,Nancyの静的リソースアクセスを実現する.
前のCustomBootstrapperでConfigureConventionsメソッドを書き換えました. protected override void ConfigureConventions(NancyConventions conventions)
{
base.ConfigureConventions(conventions);
// file uploads
conventions.StaticContentsConventions.AddDirectory("file","uploads");
//
conventions.StaticContentsConventions.AddFile("index.html", "1.html");
}
これでuploadsフォルダのファイルにアクセスできます.
本文が役に立つと思ったら、「お勧め」をクリックしてください.ありがとうございます.
public class CustomBootstrapper : DefaultNancyBootstrapper
{
protected override void ApplicationStartup(TinyIoCContainer container, IPipelines pipelines)
{
//
}
}
public class CustomBootstrapper:DefaultNancyBootstrapper
{
protected override void ApplicationStartup(Nancy.TinyIoc.TinyIoCContainer container, Nancy.Bootstrapper.IPipelines pipelines)
{
pipelines.OnError += Error;
}
private dynamic Error(NancyContext context, Exception ex)
{
// log4net ex
return ex.Message;
}
}
root path GetRootPathは、アプリケーションルートディレクトリを取得できます.
ルートディレクトリを変更することもできます.
ルートディレクトリを変更するには、インタフェースを実装する必要があります:
IRootPathProvider
まずIRootPathProvider
インタフェースを実現public class CustomRootPathProvider : IRootPathProvider
{
public string GetRootPath()
{
//
return "C:\\inetpub\\wwwroot";
}
}
そして前のCustomBootstrapper override RootPathProviderで
public class CustomBootstrapper : DefaultNancyBootstrapper
{
protected override IRootPathProvider RootPathProvider
{
get { return new CustomRootPathProvider(); }
}
}
これにより、アプリケーションルートディレクトリの変更が実現します.
root pathを使用して、上記のファイルを例にします.
public HomeModule(IRootPathProvider path)
{
Post["/file"] = r =>
{
var uploadDirectory = Path.Combine(path.GetRootPath(), "uploads");
if (!Directory.Exists(uploadDirectory))
{
Directory.CreateDirectory(uploadDirectory);
}
foreach (var file in Request.Files)
{
var filename = Path.Combine(uploadDirectory, file.Name);
using (FileStream fileStream = new FileStream(filename, FileMode.Create))
{
file.Value.CopyTo(fileStream);
}
}
return HttpStatusCode.OK;
};
}
ルートディレクトリの下にあるuploadsフォルダにファイルをアップロードします.
Managing static content
静的ファイル管理
今、アップロードしたばかりのファイルにアクセスします.画像などはどうすればいいですか.
次に,この,Nancyの静的リソースアクセスを実現する.
前のCustomBootstrapperでConfigureConventionsメソッドを書き換えました. protected override void ConfigureConventions(NancyConventions conventions)
{
base.ConfigureConventions(conventions);
// file uploads
conventions.StaticContentsConventions.AddDirectory("file","uploads");
//
conventions.StaticContentsConventions.AddFile("index.html", "1.html");
}
これでuploadsフォルダのファイルにアクセスできます.
本文が役に立つと思ったら、「お勧め」をクリックしてください.ありがとうございます.
protected override void ConfigureConventions(NancyConventions conventions)
{
base.ConfigureConventions(conventions);
// file uploads
conventions.StaticContentsConventions.AddDirectory("file","uploads");
//
conventions.StaticContentsConventions.AddFile("index.html", "1.html");
}