原文鏈接:https://www.cnblogs.com/net666/p/8242755.html
什么是靜態文件?
1:如HTML,CSS,圖像,JS文件,是.net core應用程序可以直接向客戶端提供的資產。
2:靜態文件通常位於web root(內容根目錄或Web根目錄)文件夾中,一般是將內容根目錄設置為當前目錄,以便於web root在開發中找到你的項目。
3:在.net core中如果你要使用靜態文件,你必須在啟動類管道中配置該中間件
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
}
4:假如需要訪問WebRoot以外的同級靜態文件,則需要重新配置靜態文件中間件
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"你的文件夾名稱")),
RequestPath = new PathString("/重新配置的文件夾訪問名稱") });
}
請求http://<app>/StaticFiles/test.png將服務於test.png文件。
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"); }
});
}
靜態文件授權
靜態文件模塊提供沒有授權檢查。它所提供的任何文件,包括wwwroot下的文件都是公開的。
如果想要授權訪問只能通過外部存儲它們wwwroot的任何目錄訪問靜態文件中間件和通過控制器操作來硬編碼授權訪問,通過授權則返回FileResult。
什么是Web根目錄和內容根目錄?
內容根目錄是應用程序使用的任何內容的基本路徑,例如 視圖,Razor頁面和靜態資產。
Web根目錄主要是包含公共靜態資源(如CSS,JavaScript和圖像文件)的項目中的目錄。
