前面两篇,讲解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 学习-进阶部分 继续跨平台的更多相关文章

  1. Nancy 学习-视图引擎 继续跨平台

    前面一篇,讲解Nancy的基础,以及Nancy自宿主,现在开始学习视图引擎. Nancy 目前支持两种 一个是SSVE 一个是Razor.下面我们一起学习. The Super Simple View ...

  2. Nancy 学习-自宿主 继续跨平台

    Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET 和 Mono 平台,框架的目标是保持尽可能 ...

  3. Nancy 学习-身份认证(Basic Authentication) 继续跨平台

    开源 示例代码:https://github.com/linezero/NancyDemo 前面讲解Nancy的进阶部分,现在来学习Nancy 的身份认证. 本篇主要讲解Basic Authentic ...

  4. Nancy学习

    Nancy学习 一.认识Nancy 今天听讲关于Nancy框架的培训,被Nancy的易用性所吸引.故晚上回来梳理了一下知识. 什么是Nancy呢?如标题所述,Nancy是一个轻量级的独立的框架: Na ...

  5. 测试开发学习进阶教程 视频&PDF

    测试开发学习进阶教程 视频&PDF,7天后失效,更多学习资料加Q群 https://pan.baidu.com/s/196KEo791NeZKyfV_E-36Uw 提取码: 41vu     ...

  6. Tomcat 学习进阶历程之Tomcat架构与核心类分析

    前面的http及socket两部分内容,主要是为了后面看Tomcat源代码而学习的一些网络基础.从这章開始.就開始实际深入到Tomcat的'内在'去看一看. 在分析Tomcat的源代码之前,准备先看一 ...

  7. Nancy 学习-身份认证(Forms authentication) 继续跨平台

    开源 示例代码:https://github.com/linezero/NancyDemo 上篇讲解Nancy的Basic Authentication,现在来学习Nancy 的Forms身份认证. ...

  8. (转)Android学习进阶路线导航线路(Android源码分享)

     转载请注明出处:http://blog.csdn.net/qinjuning 前言:公司最近来了很多应届实习生,看着他们充满信心但略带稚气的脸庞上,想到了去年的自己,那是的我是不是也和 现在的他们一 ...

  9. Android学习进阶路线导航线路(Android源码分享)

                                                                                                       转 ...

随机推荐

  1. BIT祝威博客汇总(Blog Index)

    +BIT祝威+悄悄在此留下版了个权的信息说: 关于硬件(Hardware) <穿越计算机的迷雾>笔记 继电器是如何成为CPU的(1) 继电器是如何成为CPU的(2) 关于操作系统(Oper ...

  2. Git bash 配置ssh key

    问题描述 昨天为了配置Qt create中的Git,把我一直在使用的Github删除了,今本以为,这样git的一些配置还在,可是,今天上传一些提交的时候,提示我,git没有密钥.梳理一下,这个简单的配 ...

  3. 对Google cloud platform 做了点研究

    Google也推出了云计算基础服务, 加上微软Azure,亚马逊AWS, 都齐活了. 下面是研究了一下对其的一个初步了解. 计算: Compute Engine     IaaS平台,提供VM,操作灵 ...

  4. Oracle数据库面试题【转载】

    1. Oracle跟SQL Server 2005的区别? 宏观上: 1). 最大的区别在于平台,oracle可以运行在不同的平台上,sql server只能运行在windows平台上,由于windo ...

  5. WebApi系列~实际项目中如何使用HttpClient向web api发异步Get和Post请求并且参数于具体实体类型

    回到目录 本讲比较实际,在WEB端有一个Index和Create方法,用来从web api显示实体列表数据和向api插入实体对象,这就是以往的网站,只不过是把数据持久化过程放到了web pai上面,它 ...

  6. MVVM架构~knockoutjs与MVC配合,实现列表的增删改功能

    返回目录 MVC与MVVM的模型 在MVC实例项目中,为我们提供了简单的增删改查功能,而这种功能的实现与具体的Model很有关系,或者说它与后台数据库的关系过于紧密了,而对于开发人员来说当页面布局修改 ...

  7. Java学习之路:不走弯路,就是捷径

    1.如何学习程序设计? JAVA是一种平台,也是一种程序设计语言,如何学好程序设计不仅仅适用于JAVA,对C++等其他程序设计语言也一样管用.有编程高手认为,JAVA也好C也好没什么分别,拿来就用.为 ...

  8. Vagrant使用简介

    一.简介: Vagrant是一款用于构建及配置虚拟开发环境的软件,基于Ruby,主要以命令行的方式运行.主要使用Oracle的开源VirtualBox虚拟化系统,与Chef,Salt,Puppet等环 ...

  9. Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

    直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建的Servlet所在的包和类名,然后单击 ...

  10. mysql创建数据库

    mysql创建数据库 创建utf8编码的数据库 CREATE DATABASE IF NOT EXISTS my_db default character set utf8 COLLATE utf8_ ...