使用ASP.NET创建web项目时一般选择就是ASP.NET的网站应用类型或是web form应用程序类型不然就是mvc模式。今天介绍一个完全脱离这些类型的.NET框架--Nancy。Nancy框架可以用来处理DELETE、GET、HEAD、OPTIONS、POST、PUT 和PATCH 的请求并使用了一种简单的、优雅的及DSL的处理方式。你可以在Nancy的官网了解到更多http://nancyfx.org/一、在MonoDevelop 4.0中安装NuGet插件安装Nancy前需要先安装MonoDevelop的AddIn---NuGet关于NuGet。打开MonoDevelop选 择“工具”》“Add in Manager”。在弹出的对话窗口中选择“Galley”的Tab页下拉选择“Manage Repositories”。然后添加一个安装源。若是MonoDevelop3.0.5请使用以下地址http://mrward.github.com/monodevelop-nuget-addin-repository/3.0.5/main.mrep若是MonoDevelop 4.0请使用以下地址http://mrward.github.com/monodevelop-nuget-addin-repository/4.0/main.mrep添加完成后点击刷新按键可以看到nuget插件已在列表中选中后点击右侧底下的安装按钮这样就成功的把NuGet安装到MonoDevelop中去了。二、新建测试项目并使用Nancy框架。Nancy框架是可以宿主在ASP.NET的Web框架或MVC框架中的。本文将使用MVC作业 Nancy的宿主。新建一个项目我这边将解决方案取名为FirstNancy把web项目取名为FirstNancy.Web。当解决方案新建完成后就可以Nuget的管理菜单在弹出的窗口中搜索框里输入nancy添加Nancy、Nancy.Hosting.Aspnet两个组件到解决方案中这时会在项目中自动添加两个引用Nancy.dll和Nancy.Hosting.Aspnet.dll。除了添加两个Nancy的引用外添加操作还会修改Web.config里的httpHandlers模块这时你还得手动修改把之前的MVC的httpHandlers注释掉最后变成如下代码httpHandlers !-- remove verb* path*.asmx / add verb* path*.asmx validatefalse typeSystem.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version4.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 / add verb* path*_AppService.axd validatefalse typeSystem.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version4.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 / add verbGET,HEAD pathScriptResource.axd typeSystem.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version4.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 validatefalse / add verb* path*.mvc validatefalse typeSystem.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version3.0.0.0, Cultureneutral, PublicKeyToken31BF3856AD364E35 /-- add verb* typeNancy.Hosting.Aspnet.NancyHttpRequestHandler path* / /httpHandlers同时把Global.asax里的路由代码去掉public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes (RouteCollection routes) { // routes.IgnoreRoute ({resource}.axd/{*pathInfo}); // // routes.MapRoute ( // Default, // {controller}/{action}/{id}, // new { controller Home, action Index, id } // ); } public static void RegisterGlobalFilters (GlobalFilterCollection filters) { filters.Add (new HandleErrorAttribute()); } protected void Application_Start () { AreaRegistration.RegisterAllAreas (); RegisterGlobalFilters (GlobalFilters.Filters); RegisterRoutes (RouteTable.Routes); } }public class MvcApplication : System.Web.HttpApplication { public static void RegisterRoutes (RouteCollection routes) { // routes.IgnoreRoute ({resource}.axd/{*pathInfo}); // // routes.MapRoute ( // Default, // {controller}/{action}/{id}, // new { controller Home, action Index, id } // ); } public static void RegisterGlobalFilters (GlobalFilterCollection filters) { filters.Add (new HandleErrorAttribute()); } protected void Application_Start () { AreaRegistration.RegisterAllAreas (); RegisterGlobalFilters (GlobalFilters.Filters); RegisterRoutes (RouteTable.Routes); } }新建一个DefaultModule.cs模块代码如下using System; using Nancy; namespace FirstNacy.Web { public class DefaultModule : NancyModule { public DefaultModule () { Get [/] paramaters { return h1Hello Nancy page!/h1; }; Get[/mult/{a}/{b}] paramaters { int a,b; int.TryParse(paramaters.a.ToString(), out a); int.TryParse(paramaters.b.ToString(), out b); return string.Format(h3a * b {0}/h3, (a * b).ToString()); }; } } }这边的Module继承自NancyModule并且在DefaultModule的构造函数中声明了两个路由。这些框架中的规则都可以在Nancy官网找到。完成后可以生成查看测试项目的显示效果如下访问带参数的页面如下三、Mono 3.0运行ASP.NET MVC项目时的注意事项将上述的应用程序放置Ubuntu服务器上报了错。原因是找不到System.Web.WebPages程序集。后来查到张善友前辈的博客《在mono 3.0 下运行ASP.NET 4网站的主意事项》后在站点的web.config中修改了System.Web.WebPages的相关配置运行成功。assemblies ... add assemblySystem.Web.WebPages, Version2.0.0.0, Cultureneutral, PublicKeyToken31bf3856ad364e35 / ... /assemblies所有有版本号为1.0.0.0的都要改成2.0.0.0appSettings add keywebpages:Version value2.0.0.0 / ... /appSettingsNancy框架有很特性都值得去研究一番本文只是一个简单的例子详细的框架规则可上Nancy官网查看文档。参考使用Nancy和Simple.Data两个轻量级的框架打造一个分布式开发系统(一)在mono 3.0 下运行ASP.NET 4网站的主意事项