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 NancyInstall-Package Nancy.OwinInstall-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=316888app.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.0var 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中;

  

转载于:https://www.cnblogs.com/spaceud/p/4974969.html

Nancy 框架学习相关推荐

  1. C#最全最详细Nancy框架学习(常见报错,控制台应用,添加到现有ASP.Net MVC站点,ajax)

    这篇博客能解决大家70%的Nancy问题 例2源码下载:https://download.csdn.net/download/qq_37791451/10678639 最近学习了Nancy框架,踩过了 ...

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

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

  3. jQuery框架学习第二天:jQuery中万能的选择器

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  4. ssm框架requestmapping找不到_框架学习,就是介么简单

    框架学习 程序员凯小白 最近实训ssm框架,SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大 ...

  5. rose框架学习总结

    rose框架学习总结 rose框架为paoding rose框架 具体可见https://code.google.com/p/paoding-rose/ 1   对rose框架的整体认识 1.1B/S ...

  6. Hadoop学习笔记—18.Sqoop框架学习

    Hadoop学习笔记-18.Sqoop框架学习 一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据 ...

  7. jQuery框架学习第一天:开始认识jQuery

    jQuery框架学习第一天:开始认识jQuery jQuery框架学习第二天:jQuery中万能的选择器 jQuery框架学习第三天:如何管理jQuery包装集 jQuery框架学习第四天:使用jQu ...

  8. Android接口和框架学习

    Android接口和框架学习 缩写: HAL:HardwareAbstraction Layer,硬件抽象层 CTS:CompatibilityTest Suite,兼容性测试套件 Android让你 ...

  9. selenium + python自动化测试unittest框架学习(二)

    1.unittest单元测试框架文件结构 unittest是python单元测试框架之一,unittest测试框架的主要文件结构: File >report >all_case.py &g ...

最新文章

  1. JavaScript初学者编程题(3)
  2. Java中intern()方法的作用
  3. snowflake分布式自增长id的java实现
  4. SAP ABAP实用技巧介绍系列之使用代码获得某个structure上的扩展字段
  5. 表单中去掉重置和提交按钮和搜索框
  6. 正则 null_正则表达式exec、match、test的区别
  7. CentOS7.2中安装rabbitmq
  8. 初识弹性文件服务:可靠的共享文件存储
  9. 学python要多久-python入门要学多久
  10. 深度学习综述(下载PDF版)
  11. 苹果id被停用_三招解决Apple ID停用问题
  12. 无根树的Prufer序列
  13. Nova 实现的 Fit Instance NUMA to Host NUMA 算法
  14. abap获取日期_ABAP 日期时间函数
  15. 小程序 横向 纵向排列
  16. 使用与破解ExcelVBA密码
  17. 【OpenCV】HSV颜色识别-HSV基本颜色分量范围
  18. 你还在用notifyDataSetChanged? 你已经out了
  19. 编写计算正方体、圆柱体、球体的表面积和体积的类。要求: (1)这三个类有一个公共的基类; (2)这三个类计算正方体、圆柱体、球体的表面积和体积的成员函数名字相同; (3)按照运行时的多态性方法设计一个
  20. 台式电脑前置面板的耳机插孔没声音

热门文章

  1. 你为什么选择考研,考研对你的意义是什么?
  2. 单位人勾心斗角,我是老实人该怎么办?
  3. 房产证是不是必须房贷还完才可以拿回来?
  4. 2021年商业的几点变化
  5. 如何快速进入一个陌生的领域,高手通常用这三步
  6. 手头现在有gtx970显卡一张,想出了970加800升级显卡,有什么推荐?
  7. 访问一下互联网中的IPV6主机
  8. 体重测试java算法代码_标准体重计算示例代码
  9. css实现图片虚化_什么? CSS 阴影竟然还有这种骚操作 ?
  10. sql azure 语法_Azure SQL Server自动故障转移组