[ASP.NET Core] Static File Middleware
前言
本篇文章介紹ASP.NET Core里,用來處理靜態檔案的Middleware,為自己留個紀錄也希望能幫助到有需要的開發人員。
- ASP.NET Core官網
結構
-
一個Web站臺最基本的功能,就是在接收到從「瀏覽器傳入」的HTTP Request封包后,將站臺內所提供的靜態檔案(Static File),封裝成為「服務器回傳」的HTTP Response封包內容,來提供給瀏覽器使用。
-
在ASP.NET Core里,內建了一個Middleware:StaticFileMiddleware,用來建立Web站臺提供靜態檔案的功能。這個Middleware會先剖析HTTP Request封包中的URL路徑、然后依照URL路徑計算并取得對應的File路徑下的檔案內容、接著再將該檔案內容封裝為HTTP Response封包內容,用來提供給瀏覽器使用。
-
而在StaticFileMiddleware里,定義URL根路徑、File根路徑這兩個系統參數,來映像URL路徑所對應的File路徑。用以提供開發人員,靈活的去設定URL路徑與File路徑之間的關系。
開發
Microsoft.AspNetCore.StaticFiles
在ASP.NET Core里,要加入StaticFileMiddleware來提供靜態檔案功能。開發人員可以先依照[ASP.NET Core] Getting Started這篇文章里的步驟,來建立相關環境與基本程序代碼。接著在project.json里掛載「Microsoft.AspNetCore.StaticFiles」的參考,后續就能使用這個參考里,所提供的StaticFileMiddleware相關對象。
{"version": "1.0.0-*","buildOptions": {"debugType": "portable","emitEntryPoint": true},"dependencies": {},"frameworks": {"netcoreapp1.0": {"dependencies": {"Microsoft.NETCore.App": {"type": "platform","version": "1.0.0"},"Microsoft.AspNetCore.StaticFiles": "1.0.0","Microsoft.AspNetCore.Server.Kestrel": "1.0.0"},"imports": "dnxcore50"}} }UseStaticFiles()
完成project.json的相關設定之后,就可以回過來修改「Program.cs」。在Microsoft.AspNetCore.StaticFiles里,提供了UseStaticFiles Extension,讓開發人員可以方便的掛載StaticFileMiddleware。在下列的范例程序代碼里,示范如何透過UseStaticFiles來掛載StaticFileMiddleware。(在StaticFileMiddleware里面,URL根路徑默認為:「http://<Url>」、File根路徑默認為:「file:\\<ContentRoot>\wwwroot」)。
using System; using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp {public class Program{public static void Main(string[] args){// Buildvar host = new WebHostBuilder()// 設定Host內容的File根路徑.UseContentRoot(Directory.GetCurrentDirectory())// 設定啟動參數.UseStartup<Startup>()// 開啟Kestrel聆聽HTTP .UseKestrel()// 設定聆聽的URL.UseUrls("http://localhost:5000")// 建立Host .Build();// Run try{// 啟動Hosthost.Start();// 等待關閉Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 關閉Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){ // 掛載StaticFilesMiddlewareapp.UseStaticFiles();}} }UseWebRoot(webRoot)
在StaticFileMiddleware里面,File根路徑默認為:「file:\\<ContentRoot>\wwwroot」。如果要變更默認的File根路徑,開發人員可以使用ASP.NET Core所提供的UseWebRoot Extension來變更默認的File根路徑。在下列的范例程序代碼里,示范如何透過UseWebRoot來變更默認的File根路徑。(范例執行時掛載的StaticFileMiddleware,URL根路徑同樣為:「http://<Url>」、File根路徑變更為:「file:\\<CurrentDirectory>\aaa」)。
using System; using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp {public class Program{public static void Main(string[] args){// Buildvar host = new WebHostBuilder()// 設定Web站臺的File根路徑.UseWebRoot(Directory.GetCurrentDirectory() + @"\aaa")// 設定Host內容的File根路徑.UseContentRoot(Directory.GetCurrentDirectory())// 設定啟動參數.UseStartup<Startup>()// 開啟Kestrel聆聽HTTP .UseKestrel()// 設定聆聽的URL.UseUrls("http://localhost:5000")// 建立Host .Build();// Run try{// 啟動Hosthost.Start();// 等待關閉Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 關閉Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){// 掛載StaticFilesMiddlewareapp.UseStaticFiles();}} }UseStaticFiles(options)
除了使用預設參數掛載StaticFilesMiddleware之外,開發人員也可以使用自定義參數來掛載StaticFilesMiddleware。如果要使用自定義參數來掛載StaticFilesMiddleware,開發人員可以同樣使用UseStaticFiles Extension來使用自定義參數掛載StaticFilesMiddleware。在下列的范例程序代碼里,示范如何透過UseStaticFiles來掛載StaticFilesMiddleware,并且定義其URL根路徑與File根路徑。(范例執行時掛載的StaticFileMiddleware,URL根路徑變更為:「http://<Url>/bbb」、File根路徑變更為:「file:\\<CurrentDirectory>\ccc」)。
using System; using System.IO; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp {public class Program{public static void Main(string[] args){// Buildvar host = new WebHostBuilder()// 設定Host內容的File根路徑.UseContentRoot(Directory.GetCurrentDirectory())// 設定啟動參數.UseStartup<Startup>()// 開啟Kestrel聆聽HTTP .UseKestrel()// 設定聆聽的URL.UseUrls("http://localhost:5000")// 建立Host .Build();// Run try{// 啟動Hosthost.Start();// 等待關閉Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 關閉Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){// 掛載StaticFilesMiddlewareapp.UseStaticFiles(new StaticFileOptions(){// 設定URL根路徑RequestPath = @"/bbb",// 設定File根目錄FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory() + @"\ccc")});}} }參考
- Working with Static Files - ASP.NET Core
轉載于:https://www.cnblogs.com/clark159/p/5984152.html
總結
以上是生活随笔為你收集整理的[ASP.NET Core] Static File Middleware的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态初始化块的执行顺序
- 下一篇: 51nod 1412 AVL数的种类(