Nancy 学习-进阶部分 继续跨平台
2016-02-22 15:12
369 查看
前面两篇,讲解Nancy的基础,及Nancy自宿主和视图引擎。
现在来学习一些进阶部分。
我们自定义Bootstrapper 需要继承 DefaultNancyBootstrapper
我们可以在 ApplicationStartup 中初始化一些参数及方法,也可以在获取全局异常。
下面我们来看看如何获取全局异常。
我们也可以更改应该根目录。
更改根目录需要实现接口 :
首先实现
然后我们在前面的 CustomBootstrapper override RootPathProvider
这样我们就实现了更改应用根目录。
我们来使用 root path ,以上传文件为例。
将文件上传到根目录下的 uploads 文件夹。
现在我们要访问刚刚上传的文件,如图片这些改怎么办呢。
下面我们来实现这个,Nancy的静态资源访问。
我们在前面的 CustomBootstrapper 重写 ConfigureConventions 方法。
这样我们就可以访问uploads 文件夹的文件了。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
现在来学习一些进阶部分。
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 文件夹的文件了。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
相关文章推荐
- centos linux安装telnet 过程及问题(源于内部tomcat网站,外部无法访问)
- 【10】AngularJS SQL
- SQL基础
- 20个命令行工具监控 Linux 系统性能
- 数学之美学习笔记
- iOS开发中遇见的错误
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- [破解实例][OllyDbg] CrackMe004-ajj.1
- GitHub上最火的40个Android开源项目(一)
- js实现下拉菜单的源代码
- CAS基于http认证实现SSO文件配置及说明
- 关于Oracle中分区表Partition与引用型游标ref cursor的应用范例
- php 微信公众号上传永久素材
- MYISM表并发写请求过多 导致无法被读取解决方案
- 自己的代码记录
- 设计模式kvc和kvo
- 消除navbar和tabbar对坐标的影响
- Apple Pay开发详解
- 改进的KMP算法
- 《大话设计模式》——原则:单一职责原则