解釋如何在ASP.NET Core中提供靜態檔案


靜態檔案指的是HTML、CSS、JavaScript和影像等內容,這些內容直接提供給使用者,無需任何動態計算。

在ASP.NET Core中,web根目錄儲存靜態檔案。預設情況下,它是{內容根目錄}/wwwroot目錄,但您可以使用UseWebRoot()方法更改它。

在Program類中,CreateDefaultBuilder()方法初始化內容根目錄。

public class Program{
   public static void Main(string[] args){
      CreateHostBuilder(args).Build().Run();
   }

   public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
         .ConfigureWebHostDefaults(webBuilder =>{
            webBuilder.UseStartup<Startup>();
         });
}

您可以為應用程式提供的每種型別的檔案建立不同的目錄。例如,名為**css**的目錄儲存樣式表,另一個名為js的目錄儲存應用程式使用的JavaScript程式碼,等等。

wwwroot目錄中的目錄可以透過相對於主機的路徑直接訪問。例如,如果您將影像儲存在wwwroot/pictures目錄中,使用者可以透過以下**URL**訪問這些影像:**https://<主機名>/images/<影像名稱>**

Startup.Configure()方法中的UseStaticFiles()方法啟用當前請求路徑的靜態檔案服務。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env){
   if (env.IsDevelopment()){
      app.UseDeveloperExceptionPage();
   }
   else{
      app.UseExceptionHandler("/Home/Error");
      app.UseHsts();
   }
app.UseHttpsRedirection();

   app.UseStaticFiles();

   app.UseRouting();

   app.UseAuthorization();

   app.UseEndpoints(endpoints =>{
      endpoints.MapControllerRoute(
      name: "default",
      pattern: "{controller=Home}/{action=Index}/{id?}");
   });
}

當您在授權中介軟體之前呼叫靜態檔案中介軟體時,框架不會對正在提供的靜態檔案執行任何授權檢查。因此,wwwroot目錄下的檔案是公開可訪問的。如果您想在提供靜態檔案之前授權請求,則需要將它們儲存在wwwroot目錄之外,並在呼叫UseAuthorization()之後呼叫靜態檔案中介軟體。

更新於:2021年6月22日

693 次瀏覽

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告