Nancy 框架

Nancy 框架

  1、是一个轻量级用于构建http相应的web框架;

  2、与mvc类似,有自己的路由机制;

  3、可以处理 DELETE ,  GET ,  HEAD ,  OPTIONS ,  POST ,  PUT 和 PATCH等请求;

  4、完美支持OWIN(可以说他就是为OWIN而生的);

1、创建项目

  打开vs,创建asp.net项目,选择empty模板;

  如图

  

2、安装模板

  Package Manage Console,输入命令

Install-Package Nancy
Install-Package Nancy.Owin
Install-Package Microsoft.Owin

解释: 因为本篇实例是寄宿在TinyFox  (国内牛人编写的宿主容器,三平台通吃哦!!下载地址http://linuxdot.net/down/tinyfox-2.3.tar.gz),所以只需安装这三个即可;

3、Owin相关配置

  添加 Startup  方法新建项目选择 OWIN Startup class

  代码如下

using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin; [assembly: OwinStartup(typeof(NancyDemo.Startup))] namespace NancyDemo
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
app.UseNancy();//增加Nancy 中间件到Owin管线;
}
}
}

  

  添加Adapter,将下面的代码复制即可,我也是复制的!

public class Adapter
{
/*************************************
* 这是一个比较完整的适配器示例
* ***********************************/ /// <summary>
/// OWIN 应用程序委托
/// </summary>
static Func<IDictionary<string, object>, Task> _owinApp; /// <summary>
/// 适配器构造函数
/// </summary>
public Adapter()
{ //实例化一个应用程序生成器
var builder = new AppBuilder(); // 为生成器添加一些参数
// 因某些OWIN框架需要从该参数中得到一些初始化环境信息
// 这些信息可以包括 如“owin版本”“服务器功”能等等
var properties = builder.Properties;
properties["owin.Version"] = "1.0"; // 只能是1.0 var disposeSource = new CancellationTokenSource();
properties["server.OnDispose"] = disposeSource.Token; Func<Task> svrInitCallback = null;
Action<Func<Task>> init = (callback) => { svrInitCallback = callback; };
properties["server.OnInit"] = init;
//....... var capabilities = properties.ContainsKey("server.Capabilities") ? properties["server.Capabilities"] as IDictionary<string, object> : new Dictionary<string, object>();
properties["server.Capabilities"] = capabilities;
capabilities["server.Name"] = "TinyFox";
//capabilities["websocket.Version"] = "1.0";
//...... //实例化用户的启动类,并调用配置方法
//如果用户启动类在其它的dll中,就需要通过反射找出这个类
var startup = new Startup();
startup.Configuration(builder); //构建OWIN应用并获取该应用的代理(委托)方法
_owinApp = builder.Build(); //要求应用程序域退出时,向本类发出通知
AppDomain.CurrentDomain.DomainUnload += ((o, e) => { disposeSource.Cancel(); }); //回调应用层初始化函数
if (svrInitCallback != null) svrInitCallback().Wait(); } /// <summary>
/// *** Jexus/TinyFox所需要的关键函数 ***
/// </summary>
/// <param name="env">新请求的环境字典,具体内容参见OWIN标准</param>
/// <returns>返回一个正在运行或已经完成的任务</returns>
public Task OwinMain(IDictionary<string, object> env)
{
//如果为空
if (_owinApp == null) return null; //调用Microsoft.Owin的应用程序委托函数,将请求传给OWIN框架
return _owinApp(env);
} } //end class

  修改Nancy的根目录设置 方法就是 增加下面的类即可 (直接复制吧)

using Nancy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace NancyDemo
{
public class SiteRootPath : IRootPathProvider
{ /**************************************************************
* TinyFox Owin Server 默认情况下
* 网站是放在 TinyFox 进程所在文件夹下的site/wwwroot中的
* ----------------------------------------------------------
* 如果你把 NancyFx 的 Views 页放在其它的地方,应该作相应修改
*******************************************************************/ /// <summary>
/// 网站根文件夹物理路径(for tinyfox)
/// </summary>
static readonly string _RootPath = AppDomain.CurrentDomain.GetData(".appPath").ToString(); /// <summary>
/// 获取网站或WEB应用的根文件夹的物理路径
/// </summary>
/// <returns></returns>
public string GetRootPath()
{
return _RootPath; } }
}

  

  配置文件中增加如下配置

  

<appSettings>
<add key="owin:HandleAllRequests" value="true"/>
</appSettings>

为了方便调试,我需要对项目属性进行设置,设置如下图

4、开始coding

  创建模块(与mvc controller类似)

  代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Nancy;
namespace NancyDemo
{
public class HomeModule : NancyModule//每个module必须继承自NancyModule
{
public HomeModule()
{
Get["/"] = _ =>
{
return Response.AsText("呵呵", "text/html;charset=UTF-8");//中文不乱码了!!
};//这里定义了访问网站根目录的route get 请求
}
}
}
到这里就可以简单的运行了,F5!!
  运行效果如下图

到这里就简单的搭建了一个Nancy站点,over!

  补充:

  Nancy owin模式寄宿在TinyFox 会存在web.config配置读取不到的问题

  解决方法就是 把web.config复制到TinyFox.exe相同目录下 改成TinyFox.exe.config;

  如果本身存在这个文件就直接把web.config中的内容复制到TinyFox.exe.config中;

  

 
 
标签: Nancy

Nancy 框架的更多相关文章

  1. ASP.NET Core开发-使用Nancy框架

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

  2. Nancy总结(二)记一次Nancy 框架中遇到的坑

    记一次Nancy 框架中遇到的坑 前几天,公司一个项目运行很久的Nancy框架的网站,遇到了一个很诡异的问题.Session 对象跳转到另外一个页面的时候,session对象被清空了,导致用户登录不上 ...

  3. NET Core开发-使用Nancy框架

    NET Core开发-使用Nancy框架 Nancy简介 Nancy是一个轻量级的独立的框架,下面是官网的一些介绍: Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,基于 .NET ...

  4. Nancy 框架学习

    Nancy 框架 1.是一个轻量级用于构建http相应的web框架: 2.与mvc类似,有自己的路由机制: 3.可以处理 DELETE ,  GET ,  HEAD ,  OPTIONS ,  POS ...

  5. 【框架学习】Nancy 框架

    Nancy 框架 http://liulixiang1988.github.io/nancy-webkuang-jia.html .是一个轻量级用于构建http相应的web框架: .与mvc类似,有自 ...

  6. 轻量级MVC框架:Nancy学习

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

  7. 简洁的MVC思想框架——Nancy(Session的使用)

    前文提到关于Nancy中GET和POST以及外部引用图片,css和JS的文件等操作.今天所讲的是Nancy关于Session相关操作. Session作为web开发中极其重要的一部分,而Nancy中S ...

  8. Nancy Web框架

    原文 Nancy Web框架 Nancy框架 一.创建第一个Nancy应用 二.探索Nancy的module 1. 模块能够在全局被发现 2. 使用模块为路由创建一个根 三.定义路由 1. 方法 2. ...

  9. Nancy学习

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

随机推荐

  1. Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构

    Backbone.js 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和 自定义事件:集合附有可枚举函数 ...

  2. hdu2126(求方案数的01背包)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2126 题意: n个物品,m元钱,每个物品最多买一次,问最多可以买几件物品,并且输出方案数. 分析:一看 ...

  3. wp天气预报

    ak url  http://developer.baidu.com/map/index.php?title=car 后台cs using System; using System.Collectio ...

  4. MySQL数据转移至MSSQL详解

    一.安装MySQL ODBC驱动 为MySQL安装Connector/ODBC驱动.在此需要注意的一点是Connector/ODBC驱动与MySQL Server的版本对应问题.   二.创建系统DS ...

  5. 利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口

    前言     sendmsg和recvmsg函数是一对相对下层的套接字发送.接受函数. 通过这对函数,我们能够设置或者取得数据包的一些额外的控制信息.这些信息中比較经常使用的就是本文要介绍的发送.接受 ...

  6. [HTML5游戏开发]简单的《找没有同汉字版〗爆去考考您狄综力吧

    [color=ize:18px]一,筹办工做   本次 游戏开发需求用到lufylegend.js开源游戏引擎,版本我用的是1.5.2(如今最新的版本是1.6.0).    引擎下载的位置:http: ...

  7. 基于三星ARM9(S3C2410)的交通违章抓拍系统的开发

    ARM9的交通违章抓拍系统的开发   ARM9的交通违章抓拍系统的开发 智能交通系统(ITS)将先进的信息技术.数据通讯传输技术.电子控制技术.计算机处理技术等应用于交通运输行业,从而实现各种运输方式 ...

  8. Windows Phone开发(13):如何规范用户的输入行为

    原文:Windows Phone开发(13):如何规范用户的输入行为 很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的. ...

  9. Netty In Action中国版 - 第二章:第一Netty程序

    本章介绍 获得Netty4最新的版本号 设置执行环境,以构建和执行netty程序 创建一个基于Netty的server和client 拦截和处理异常 编制和执行Nettyserver和client 本 ...

  10. [Windows Phone] 实作不同的地图显示模式

    原文:[Windows Phone] 实作不同的地图显示模式 前言 本文章主要示范如何让地图有不同的模式产生,例如平面图.地形图.鸟瞰图.鸟瞰图含街道等. 这部分主要是调整 Map.Cartograp ...