概述
这篇博客能解决大家70%的Nancy问题
例2源码下载:https://download.csdn.net/download/qq_37791451/10678639
最近学习了Nancy框架,踩过了许多大大小小的坑,特写这篇入门博客,现在分享出来供各位同行或者有需要的人用以参考
Nancy是一个轻量级的用来创建基于HTTP的服务的框架,该框架的可以运行在.net或者mono上。 Nancy处理和mvc类似的DELETE
, GET
, HEAD
, OPTIONS
, POST
, PUT,
PATCH请求,如果你有mvc开发的经验相信可以快速入门。最重要的一点可以让你的Web应用脱离IIS的束缚。
1.使用Nancy的控制台应用
第一步自然是添加引用,控制台引用和.NET MVC的应用是不同的
using Nancy;using Nancy.Hosting.Self;
Nancy框架和MVC很是相似,不过官网的定义是:Nancy是一个用于构建基于HTTP 的Web服务的框架。
我们在项目下创建Modules和Views文件夹,Modules就像MVC的Controller用来控制管理处理请求返回View中的页面(一般是.html,.cshtml,.htm文件)
控制台程序一般用于监听端口,那我们就写一个监听端口的程序 直接贴代码
Moduel代码:
代码太长就不都贴出来了,上面代码中每一个Get["/"]或Post["/"]中的["/"]都是一个路由,Nancy的路由非常灵活你可以根据路由规则随意定制,Get["/"]是默认路由,只需要在浏览器地址栏里输入localhost:50223就可以访问了,而Get["/user"]代表在浏览器输入的网址为localhost:50223/user 才可以访问,否则就会报错404。每一个Get或Post都代表这个Module可以处理的请求路由格式,每一个每一个Get或Post就是一个请求,其中第一和第二个Post代表处理TestModule类的两个方法,所以必须要返回方法名,注意后面同路径的Get或Post后覆盖前面写的,Get["/"]=a=>{return "a;"};会被后面写的Get["/"]=b=>{return "b";}; 覆盖,网页只会显示b
在浏览器输入网址打开页面默认是Get请求,如果我们在输入localhost:50233/admin 就会显示网络错误,Post请求可以用一些抓包工具比如Fildder组建请求头部发送请求
Nancy里面的所有控制器都需要继承NancyModule类,类比MVC的控制器都需要继承Controller类,同时所有的类都必须是public类,否则会报错404
=
现在我们点运行按钮会发现报左边图片的错误,这是因为控制台监听端口需要管理员权限,所以我们需要以管理员权限运行Visual Studio,然后就会出现右边图片的样子,但是当我们打开网址localhost:50223时却报了500错误,那是因为控制台在Debug运行时是不在根目录下读取文件的,你需要复制一份Views到bin/Debug目录下才可以
复制完以后我们再在浏览器中输入localhost:50233就可以直接打开Views文件夹下的Index.html了,当然你也可以不返回视图文件Index.html直接显示字符串 Get["/"] = _ => { return "hello"; }; 这样就会打开一个空白页面显示hello
同时处理路由请求也是有一定逻辑的,我们一第二个Get为例:Get["/user/{id}"]=parameters=>{...}; 中定义了一个id参数 下面写了一个判断语句,判断id是否为666,是输出All hail user 和我们输入的id! \m/ 我们在浏览器输入localhost:50223/user/666
前台向后台用ajax传值
前台页面ajax写法不变,Nancy不支持在后台用Request接收ajax传过来的值,所以我们需要用Nancy提供的数据绑定来接收
添加引用using Nancy.ModelBinding;
在ConsoleApp1主类中写一个第一张图中的数据类,在ajax指定url接收的方法里写接收语句
注意点和MVC差不多,ajax传过来的数据名code和定义的接收变量名相同才可以
ps:Nancy也是支持Razor视图引擎的 需要引用Nancy.Viewengines.Razor.dll,这样Nancy搜索视图的时候才会加载.cshtml文件
还有路由的知识太多了,大家自行百度一下吧,都写上篇幅太长了
2.整站都使用Nancy框架
直接新建.Net空web项目 添加 Nancy,Nancy.Hosting.Aspnet,Nancy.Viewengines.Razor 这三个引用
然后在项目下直接新建Modules,Models和Views文件夹 然后写XxxModule.cs文件,添加Index.cshtml 按F5就可以运行了
没什么好说的,也没有出错,贴一下我的环境 .Net Framework4.6.1
3.将Nancy添加到已有的MVC站点
在已有的mvc站点添加引用Nancy,Nancy.Hosting.Aspnet,Nancy.Viewengines.Razor
其他的不用管,打开Web.config你会发现所有的配置都配置好了
然后你只需直接在项目下直接新建Modules文件夹,Models和Views文件夹是和MVC共用的,同样也会自动寻找Views的视图文件 在浏览器地址栏输入localhost:端口/nancy就可以了 但是写XxxMoudle.cs文件的时候要继承base("/nancy")
如果解决了您的问题,希望您可以扫一个红包在走哟,互利互惠,大家好才是真的好 或者亲们可以直接打赏,谢谢QAQ
最后
以上就是英勇鱼为你收集整理的C#最全最详细Nancy框架学习(常见报错,控制台应用,添加到现有ASP.Net MVC站点,ajax)这篇博客能解决大家70%的Nancy问题的全部内容,希望文章能够帮你解决C#最全最详细Nancy框架学习(常见报错,控制台应用,添加到现有ASP.Net MVC站点,ajax)这篇博客能解决大家70%的Nancy问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复