標籤:main 詳細資料 ext class iap roo 代碼 contex wro
來自微軟官網 在ASP.NET Core中使用靜態檔案:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files;
提供靜態檔案
靜態檔案通常位於web root
(<content-root> / wwwroot)檔案夾中。有關詳細資料,請參閱內容根和Web根。您通常將內容根設定為目前的目錄,以便web root
在開發過程中找到項目。
public static void Main(string[] args){ var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run();}
為了提供靜態檔案,您必須配置中介軟體以將靜態檔案添加到管道中。可以通過將Microsoft.AspNetCore.StaticFiles包的依賴關係添加到項目中,然後UseStaticFiles
從Startup.Configure
以下方法調用擴充方法來配置靜態檔案中介軟體:
public void Configure(IApplicationBuilder app){ app.UseStaticFiles();}
對於訪問test.png的請求,請按如下方式配置靜態檔案中介軟體:
public void Configure(IApplicationBuilder app){ app.UseStaticFiles(); // For the wwwroot folder app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")), RequestPath = new PathString("/StaticFiles") });}
StaticFileOptions()
可以設定回應標頭。例如,下面的代碼設定從wwwroot檔案夾提供的靜態檔案,並設定Cache-Control
標題使其公開可緩衝10分鐘(600秒):
public void Configure(IApplicationBuilder app){ app.UseStaticFiles(new StaticFileOptions() { OnPrepareResponse = ctx => { ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600"); } });}
啟用瀏覽目錄
瀏覽目錄允許您的Web應用程式的使用者查看指定目錄中的目錄和檔案清單。出於安全考慮,預設情況下禁用瀏覽目錄。要啟用瀏覽目錄,請UseDirectoryBrowser
從Startup.Configure
以下方式調用擴充方法 :
public void Configure(IApplicationBuilder app){ app.UseStaticFiles(); // For the wwwroot folder app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")), RequestPath = new PathString("/MyImages") }); app.UseDirectoryBrowser(new DirectoryBrowserOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")), RequestPath = new PathString("/MyImages") });}
並通過調用AddDirectoryBrowser
擴充方法添加所需的服務Startup.ConfigureServices
:
public void ConfigureServices(IServiceCollection services){ services.AddDirectoryBrowser();}
FileExtensionContentTypeProvider
本FileExtensionContentTypeProvider
類包含的副檔名映射到MIME內容類型的集合。在下面的樣本中,將幾個副檔名註冊到已知的MIME類型,“.rtf”被替換,“.mp4”被刪除。
public void Configure(IApplicationBuilder app){ // Set up custom content types -associating file extension to MIME type var provider = new FileExtensionContentTypeProvider(); // Add new mappings provider.Mappings[".myapp"] = "application/x-msdownload"; provider.Mappings[".htm3"] = "text/html"; provider.Mappings[".image"] = "image/png"; // Replace an existing mapping provider.Mappings[".rtf"] = "application/x-msdownload"; // Remove MP4 videos. provider.Mappings.Remove(".mp4"); app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")), RequestPath = new PathString("/MyImages"), ContentTypeProvider = provider }); app.UseDirectoryBrowser(new DirectoryBrowserOptions() { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot", "images")), RequestPath = new PathString("/MyImages") });}
非標準內容類型
ASP.NET靜態檔案中介軟體瞭解近400個已知的檔案內容類型。如果使用者請求未知檔案類型的檔案,則靜態檔案中介軟體返回HTTP 404(未找到)響應。如果啟用了瀏覽目錄功能,則會顯示該檔案的連結,但URI將返回HTTP 404錯誤。
以下代碼可以提供未知類型,並將未知檔案呈現為映像。
public void Configure(IApplicationBuilder app){ app.UseStaticFiles(new StaticFileOptions() { ServeUnknownFileTypes = true, DefaultContentType = "image/png" });}
Dotnet Core 在ASP.NET Core中使用靜態檔案