Nancy 寄宿OWin
生活随笔
收集整理的這篇文章主要介紹了
Nancy 寄宿OWin
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Nancy 寄宿OWin 原文:Nancy 寄宿OWin
?
一:創建一個空項目
?
二:安裝模板
Install-Package Nancy Install-Package Nancy.Owin Install-Package Microsoft.Owin install-package Nancy.ViewEngines.Razor?
三:建好的項目圖
四:RazorConfig類的內容及作用
using System.Collections.Generic; using Nancy.ViewEngines.Razor;namespace NancyMvc.Config {/// <summary>/// Razor配置,如果你需要使用 cshtml,這個配置比較重要,當然,也可以在這兒加入其它的類/// </summary>public class RazorConfig: IRazorConfiguration{/// <summary>/// 需加載的程序集列表/// </summary>/// <returns></returns>public IEnumerable<string> GetAssemblyNames(){//加了這句,才能處理 cshtmlyield return "System.Web.Razor";}/// <summary>/// 需要添加到cshtml中的名字空間/// </summary>/// <returns></returns>public IEnumerable<string> GetDefaultNamespaces(){yield return "System.Web.Razor";}/// <summary>/// 是否自動引用model名字空間/// </summary>public bool AutoIncludeModelNamespace{get { return true; }}} }五:SiteRootPath 內容及作用,不可少,不然項目有錯誤
using System; using Nancy;namespace NancyMvc.Config {/// <summary>/// 提供網站物理路徑的類/// </summary>public class SiteRootPath : IRootPathProvider{/*************************************************************** TinyFox Owin Server 默認情況下* 網站是放在 TinyFox 進程所在文件夾下的site/wwwroot中的* ----------------------------------------------------------* 如果你把 NancyFx 的 Views 頁放在其它的地方,應該作相應修改*******************************************************************//// <summary>/// 網站根文件夾物理路徑(for tinyfox)/// </summary>// static readonly string _RootPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "site", "wwwroot");// (for Jexus Web Server or Host in ASP.NET),如果自定義root后需要使用static readonly string _RootPath = AppDomain.CurrentDomain.GetData(".appPath").ToString();/// <summary>/// 獲取網站或WEB應用的根文件夾的物理路徑/// </summary>/// <returns></returns>public string GetRootPath(){return _RootPath;}} }六:MainModule的內容與作用
using System; using System.Collections.Generic; using System.Drawing; using NancyMvc.Filter;namespace NancyMvc.Controller {public class MainModule: BaseNancyModule{/// <summary>/// 構造函數/// </summary>public MainModule(){//在構造函數中進行路由配置Get["/home"] = UserFont;}private dynamic UserFont(dynamic arg){//顯示cshtml頁return View["Home/index"];}} }七:BaseNancyModule?的內容與作用
using System; using System.Collections.Generic; using System.Linq; using Nancy;namespace NancyMvc.Filter {public class BaseNancyModule: NancyModule{public BaseNancyModule(){//請求之前Before += context =>{return null;};//請求之后After += context =>{context.Response.ContentType = "text/html;charset=utf-8";};}} }八:MyStatusHandler
using Nancy; using Nancy.ErrorHandling; using Nancy.ViewEngines;namespace NancyMvc.Handler {/// <summary>/// 自定義http status處理類/// </summary>public class MyStatusHandler : IStatusCodeHandler{private IViewRenderer viewRenderer;public MyStatusHandler(IViewRenderer viewRenderer){this.viewRenderer = viewRenderer;}/// <summary>/// 具體處理過程/// </summary>/// <param name="statusCode"></param>/// <param name="context"></param>public void Handle(HttpStatusCode statusCode, NancyContext context){var response = viewRenderer.RenderView(context, "Status/404");response.StatusCode = statusCode == HttpStatusCode.NotFound ? HttpStatusCode.OK : statusCode;context.Response = response;}/// <summary>/// 當前狀態是否需要自己處理/// </summary>/// <param name="statusCode"></param>/// <param name="context"></param>/// <returns></returns>public bool HandlesStatusCode(HttpStatusCode statusCode, NancyContext context){//return false;return (statusCode == HttpStatusCode.NotFound//|| statusCode == HttpStatusCode.ServiceUnavailable//|| statusCode == HttpStatusCode.InternalServerError );}} }九:Adapter?
using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Owin.Builder;namespace NancyMvc {class Adapter{static Func<IDictionary<string, object>, Task> _owinApp;/// <summary>/// 默認構造函數/// </summary>public Adapter(){var builder = new AppBuilder();var startup = new Startup();startup.Configuration(builder);_owinApp = builder.Build();}/// <summary>/// *** JWS所需要的關鍵函數 ***/// </summary>/// <param name="env">新請求的環境字典,具體內容參見OWIN標準</param>/// <returns>返回一個正在運行或已經完成的任務</returns>public Task OwinMain(IDictionary<string, object> env){//如果為空if (_owinApp == null) return null;//將請求交給Microsoft.Owin處理return _owinApp(env);}} }十:Startup?
using Owin;namespace NancyMvc {public class Startup{public void Configuration(IAppBuilder builder){builder.UseNancy();}} }十一:配置properties
啟動外部程序是tinyfox的包?下載地址http://linuxdot.net/down/tinyfox-2.3.tar.gz)
命令行參數中的 -p 8083是你配置的端口號 ?-root 后面的是你當前項目的位置,不需要配到bin
?
本文章主要參考來源?http://www.cnblogs.com/gaobing/p/4969581.html
?
posted on 2018-05-21 16:39 NET未來之路 閱讀(...) 評論(...) 編輯 收藏轉載于:https://www.cnblogs.com/lonelyxmas/p/9067963.html
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的Nancy 寄宿OWin的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [C++]2-4 子序列的和
- 下一篇: JS设置CSS样式的集中方式