Dotnet Core 在ASP.NET Core中使用靜態檔案

來源:互聯網
上載者:User

標籤: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包的依賴關係添加到項目中,然後UseStaticFilesStartup.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應用程式的使用者查看指定目錄中的目錄和檔案清單。出於安全考慮,預設情況下禁用瀏覽目錄。要啟用瀏覽目錄,請UseDirectoryBrowserStartup.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中使用靜態檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.