解释如何在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 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.