使用靜態檔案的Middleware(UseStaticFiles)
UseStaticFiles
.NetCore需要在 Startup 加入 StaticFileMiddleware 才能直接訪問靜態檔案,預設的路徑為 wwwroot
app.UseStaticFiles();
新增一個檔案放在 wwwroot 底下
並且加入 StaticFileMiddleware 後,網址根目錄指向資料夾 wwwroot,若存在指定的檔案,則可以直接訪問 index.html,若找不到檔案,則會繼續往下面的Middleware進行
若需要指定 wwwroot 外的路徑為靜態檔案路徑,可以使用 UseStaticFiles 的多載,我指定路徑 “RootFile” 會指向根目錄下的 File 資料夾
app.UseStaticFiles(new StaticFileOptions
{
RequestPath = "/RootFile",
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),
"File"))
});
UseDefaultFiles
使用 DefaultFilesMiddleware 可以指定進入預設的 File
app.UseDefaultFiles();
UseDirectoryBrowser
若想要開啟資料夾的瀏覽功能,可以使用UseDirectoryBrowser,稍有不同的是除了 Middleware,還需要額外加入 Service
多載可以指定要啟用功能的目錄
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseDirectoryBrowser("/Test");
}
UseRewriter
先前曾在 vue.js 的文章中提到,若要實現SPA,需要請後端啟用 UrlRewrite 的功能,下面程式碼將會把所有不是對 api 的請求做 UrlRewrite 到 index.html
app.MapWhen(context =>
{
return !context.Request.Path.Value.StartsWith("/api");
}, builder =>
{
var options = new RewriteOptions();
options.AddRewrite(".*", "/index.html", true);
builder.UseRewriter(options);
builder.UseStaticFiles();
});