[英].NET Core Nancy application serving static files
我正在嘗試使用Nancy構建一個最小的可行網站作為.NET Core項目,其中一些后端處理和靜態文件作為前端駐留在默認項目文件夾wwwroot
。 主要問題是我不明白如何使應用程序響應靜態文件,因為默認約定不適用於新的.NET Core項目系統。
將Nancy應用程序構建為經典的.NET Framework應用程序已有詳細記錄,網上有很多關於如何執行此操作的示例。 但.NET Core項目( .xproj
)與傳統的.NET Framework項目( .csproj
)有很大不同。 我很喜歡新的項目系統,但我不明白如何將Nancy部分集成到其中。 而且缺乏關於如何做的文檔和樣本。
TL; DR : GitHub存儲庫 ,其中包含所有需要的管道代碼的演示項目所在。 對於Nancy v.1.4.3以及對於預發布版本2.0.0-barneyrubble。
支持.NET Core和.NET Standard的Nancy v.2仍然處於預發布狀態,所以即使你想堅持使用穩定的v.1分支 - 沒問題。
以下是從頭開始如何做到這一步的一步一步,這對我有用 :
1)創建一個新的空ASP.NET核心Web應用程序
2) (如果你想堅持Nancy "netcoreapp1.0"
必須提供)打開project.json
,刪除"Microsoft.NETCore.App"
依賴項並將目標框架從"netcoreapp1.0"
更改為"net46"
,這樣frameworks
部分就會顯示像那樣:
"frameworks": {
"net46": {}
},
3)將以下依賴項添加到project.json: "Microsoft.AspNetCore.Owin"
和"Nancy"
。 在編寫project.json
的依賴項部分時為project.json
:
"dependencies": {
// Ommited dependencies
"Microsoft.AspNetCore.Owin": "1.0.0",
"Nancy": "1.4.3"
},
對於第2節:
"dependencies": {
// Ommited dependencies
"Microsoft.AspNetCore.Owin": "1.0.0",
"Nancy": "2.0.0-barneyrubble"
},
4)創建一個實現IRootPathProvider
的類,並通過利用IHostingEnvironment
對象在運行時提供wwwroot
文件夾( WebRootPath
屬性)的路徑:
public class AppRootPathProvider : IRootPathProvider
{
private readonly IHostingEnvironment _environment;
public AppRootPathProvider(IHostingEnvironment environment)
{
_environment = environment;
}
public string GetRootPath()
{
return _environment.WebRootPath;
}
}
5)創建一個派生自DefaultNancyBootstrapper
的類,它將檢索IHostingEnvironment
對象並將其傳遞給先前定義的Root Provider。 它還將使用您自己的更改默認StaticContentsConventions
:
public class AppNancyBootstrapper : DefaultNancyBootstrapper
{
public AppNancyBootstrapper(IHostingEnvironment environment)
{
RootPathProvider = new AppRootPathProvider(environment);
}
protected override void ConfigureConventions(NancyConventions conventions)
{
base.ConfigureConventions(conventions);
conventions.StaticContentsConventions.AddDirectory("css");
conventions.StaticContentsConventions.AddDirectory("js");
conventions.StaticContentsConventions.AddDirectory("fonts");
}
protected override IRootPathProvider RootPathProvider { get; }
}
6)打開Startup
類並用這一個替換Configure
方法中的最后一行:
app.UseOwin(x => x.UseNancy(options => options.Bootstrapper = new AppNancyBootstrapper(env)));
它利用上一步中創建的Bootstrapper。
7)現在是時候定義你的NancyModule
。 V. 1:
public class AppNancyModule : NancyModule
{
public AppNancyModule()
{
Get["/"] = _ => View["index"];
Get["/{fileName}"] = parameters => View[parameters.fileName];
}
}
五.2:
public class AppNancyModule : NancyModule
{
public AppNancyModule()
{
Get("/", _ => View["index"]);
Get("/{fileName}", parameters => View[parameters.fileName]);
}
}
你很高興去! 只需將您的靜態文件放在wwwroot
- 然后關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.