首頁>技術>

安裝 靜態檔案中介軟體

要想安裝 靜態檔案中介軟體,必須將 Microsoft.AspNetCore.StaticFiles 新增到 ASP.NET Core 的請求管道中,可以使用 Visual Studio 2019 中的 NuGet package manager 視覺化介面,要麼用 NuGet package manager console 在命令列視窗中鍵入如下命令。

dotnet add package Microsoft.AspNetCore.Rewrite
基礎資訊配置

下面的程式碼展示了在 Startup 中如何對 靜態檔案中介軟體 進行配置。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){   app.UseStaticFiles();   app.UseEndpoints(endpoints =>   {       endpoints.MapControllerRoute(            name: "default",            pattern: "{controller=Home}/{action=Index}/{id?}");            endpoints.MapRazorPages();   });}
ASP.NET Core 中處理 靜態檔案

靜態檔案都是統一配置在 wwwroot 資料夾下, 可以看到 wwwroot資料夾下還有 cssimagesjs 等資料夾,值得注意的是這些資料夾之間可以採用相對路徑進行訪問。

如果 靜態檔案中介軟體 已經成功配置好,接下來可以使用下面的路徑訪問 test.png 圖片。

http://localhost:44399/images/test.png

如果大家心思細膩的話就會發現,當我不想用 wwwroot 來承載這些靜態檔案的話,該怎麼做呢? 換句話說,我怎麼去處理在 wwwroot 資料夾之外的靜態檔案呢? 下面的程式碼片段展示瞭如何去配置。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){    app.UseStaticFiles();    app.UseStaticFiles(new StaticFileOptions()    {        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),@"IDGStaticFiles")),        RequestPath = new PathString("/StaticFiles")    });}
啟用 目錄瀏覽

一般web程式中都會提供一個叫做 目錄瀏覽 的功能,它允許使用者瀏覽一個指定資料夾下的所有檔案和資料夾,但通常為了安全考慮,這個功能預設都是關閉狀態,如果你有開啟的需求,可以使用 UseDirectoryBrowser 擴充套件方法在 Configure 下進行配置,下面的程式碼片段展示瞭如何開啟 目錄瀏覽

    public class Startup    {        public Startup(IConfiguration configuration)        {            Configuration = configuration;        }        public IConfiguration Configuration { get; }        // This method gets called by the runtime. Use this method to add services to the container.        public void ConfigureServices(IServiceCollection services)        {            services.AddDirectoryBrowser();        }        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)        {            app.UseStaticFiles();            app.UseStaticFiles(new StaticFileOptions()            {                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot")),                RequestPath = new PathString("/IDGImages")            });            app.UseDirectoryBrowser(new DirectoryBrowserOptions()            {                FileProvider = new PhysicalFileProvider(              Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\images")),                RequestPath = new PathString("/IDGImages")            });        }    }

然後把程式跑起來並在 url 中指定 IDGImages 路徑,你將會看到 wwwroot\images 資料夾下的所有內容。

保護檔案安全

從前面的例子中可以看到,wwwroot 中的這些檔案都是公開可訪問的,但很多時候想在某些檔案上做一些授權處理,如果要這麼做的話,有兩種方式可以實現。

將需要保護的檔案從 wwwroot 移到單獨的資料夾中。

利用 Action 來處理檔案,並返回 FileResult 的方式。

處理預設頁面

最後,你可以利用 UseDefaultFiles 擴充套件方法來提供一個 web程式的 預設頁面,下面的程式碼配置展示瞭如何配置。

public void Configure(IApplicationBuilder app){    app.UseDefaultFiles();    app.UseStaticFiles();}

值得注意的是,如果你的web程式中需要有 靜態檔案,預設檔案,目錄瀏覽 三項功能的話,可以直接使用 UseFileServer 擴充套件方法,下面的程式碼片段展示瞭如何在 Configure 方法中進行配置。

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Java lambda表示式人類使用指南