博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Nancy 学习-进阶部分 继续跨平台
阅读量:6447 次
发布时间:2019-06-23

本文共 2705 字,大约阅读时间需要 9 分钟。

前面两篇,讲解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 文件夹的文件了。

 

如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

转载地址:http://jbpwo.baihongyu.com/

你可能感兴趣的文章
padding与margin的差别
查看>>
Icehouse 创建Instance代码分析
查看>>
iOS开发多线程篇—GCD介绍
查看>>
单元测试 逃不开的Done 与约定
查看>>
解决parseSdkContent failed java.lang.NullPointerException错误
查看>>
正确的 zip 压缩与解压代码
查看>>
经典SQL语句大全
查看>>
关于测试中哪些信息需要放到jira上面
查看>>
《JQuery技术内幕》读书笔记——自调用匿名函数剖析
查看>>
解决statusStrip控件上的项目不能靠右对齐的问题
查看>>
时间服务器/时间同步配置
查看>>
创建与删除索引
查看>>
am335x 内核频率 ddr3频率 电压调整
查看>>
<runtime> 的 <assemblyIdentity> 元素和<bindingRedirect> 元素
查看>>
【LeetCode】76. Minimum Window Substring
查看>>
查找任意数目参数的最大值
查看>>
UVa 1586 - Molar Mass
查看>>
Android蓝牙设备名修改
查看>>
Oracle PL/SQL随堂笔记总结
查看>>
编码原则:最小化使用控制结构(条件和循环)续:告别 break 和 continue
查看>>