Nancy 学习-进阶部分 继续跨平台
前面两篇,讲解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 文件夹的文件了。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
Nancy 学习-进阶部分 继续跨平台的更多相关文章
- Nancy 学习-视图引擎 继续跨平台
前面一篇,讲解Nancy的基础,以及Nancy自宿主,现在开始学习视图引擎. Nancy 目前支持两种 一个是SSVE 一个是Razor.下面我们一起学习. The Super Simple View ...
- Nancy 学习-自宿主 继续跨平台
Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...
- Nancy 学习-身份认证(Basic Authentication) 继续跨平台
开源 示例代码:https://github.com/linezero/NancyDemo 前面讲解Nancy的进阶部分,现在来学习Nancy 的身份认证. 本篇主要讲解Basic Authentic ...
- Nancy学习
Nancy学习 一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Na ...
- 测试开发学习进阶教程 视频&PDF
测试开发学习进阶教程 视频&PDF,7天后失效,更多学习资料加Q群 https://pan.baidu.com/s/196KEo791NeZKyfV_E-36Uw 提取码: 41vu ...
- Tomcat 学习进阶历程之Tomcat架构与核心类分析
前面的http及socket两部分内容,主要是为了后面看Tomcat源代码而学习的一些网络基础.从这章開始.就開始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源代码之前,准备先看一 ...
- Nancy 学习-身份认证(Forms authentication) 继续跨平台
开源 示例代码:https://github.com/linezero/NancyDemo 上篇讲解Nancy的Basic Authentication,现在来学习Nancy 的Forms身份认证. ...
- (转)Android学习进阶路线导航线路(Android源码分享)
转载请注明出处:http://blog.csdn.net/qinjuning 前言:公司最近来了很多应届实习生,看着他们充满信心但略带稚气的脸庞上,想到了去年的自己,那是的我是不是也和 现在的他们一 ...
- Android学习进阶路线导航线路(Android源码分享)
转 ...
随机推荐
- sizeof && strlen 的区别
本文主要记录了 sizeof 操作符 和 strlen() 函数的区别,以及各自的用途.(在下才疏学浅,发现错误,还请留言指正) sizeof 和 strlen 的区别 示例代码如下: #includ ...
- salesforce 零基础学习(二十二)Test简单使用
本篇内容只是本人简单的mark开发中常出现的一些疑问,方便后期项目使用时奠定基础,如果对Test零基础童鞋,欢迎查看Test官方的使用介绍: https://help.salesforce.com/a ...
- PHP实现RESTful风格的API实例(三)
接前一篇PHP实现RESTful风格的API实例(二) .htaccess :重写URL,使URL以 /restful/class/1 形式访问文件 Options +FollowSymlinks R ...
- UML快速回顾
UML(Unified Modeling Language)统一建模语言的概念已经出现了近20年,虽然并不是所有的概念都非常有实践意义,但常见的用例图.类图.序列图和状态图却实实在在非常有效,是项目中 ...
- ThinkPHP5 隐藏接口里面的index.php
隐藏index.php 官方介绍是这样的:http://www.kancloud.cn/thinkphp/thinkphp5_quickstart/145250 可以去掉URL地址里面的入口文件ind ...
- 引入CSS文件的@import与link的权重分析
我很少在CSS用到@import这个标签,最近看到一句话“link方式的样式的权重 高于@import的权重”,感觉不太对,@import只是一个引入外部文件而已,怎么会有高于link的权重呢?于是我 ...
- windows phone Datepicker Timepicker
选择程序包管理器控制台 在PM后输入Install-Package WPtoolkit可自动下载 PM> Install-Package WPtoolkit 在xaml中添加引用 xmlns:t ...
- sql基础语句大杂烩
(坑Open Office,这排版...) 1.distinct列出不同值,过滤掉相同的值 例:company中有两个相同的值比如(apple和apple)时,则只取出一个值 SELECT DISTI ...
- 后端码农谈前端(CSS篇)第四课:选择器补充(伪类与伪元素)
一.伪类: 属性 描述 :active 向被激活的元素添加样式. :focus 向拥有键盘输入焦点的元素添加样式. :hover 当鼠标悬浮在元素上方时,向元素添加样式. :link 向未被访问的链接 ...
- Yii2的深入学习--别名(Aliases)
在之前自动加载机制的文章中,我们有提到别名,提到 getAlias 方法,大家当时可能不太清楚,这到底是什么,今天我们就来说一下别名. 别名用来表示文件路径和 URL,这样就避免了将一些文件路径.UR ...