Nancyラーニング-ステップアップ部分はプラットフォーム間で継続

7177 ワード

前の2編では、Nancyの基礎と、Nancyのホストとビューエンジンについて説明します.
今、いくつかの進級部分を勉強します.
 

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フォルダのファイルにアクセスできます.
 
本文が役に立つと思ったら、「お勧め」をクリックしてください.ありがとうございます.