ASP.NET Core能够将静态文件(例如HTML,CSS,图像和JavaScript)直接提供给客户端,而无需通过MVC中间件。
静态文件
HTML,CSS,图像,JavaScript文件称为静态文件。静态文件中的内容在用户请求时不会动态更改。因此,将请求一直传递到MVC中间件只是为了提供这些文件的话,就有一点大材小用的感觉。因此,ASP.NET Core为此提供了内置的中间件。
静态文件中间件
要提供静态文件,我们需要添加静态文件中间件。程序集Microsoft.AspNetCore.StaticFiles中提供了此中间件。我们不需要安装此程序集,因为它是Microsoft.AspNetCore.All 元包的一部分。我们可以使用扩展方法UseStaticFiles将ASP.NET Core配置为提供静态文件。
如下所示,Startup.cs在app.run之前注册app.UseStaticFiles。
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); } }
app.Run是终止中间件。 因此,如果将UseStaticFiles放置在app.Run之后,它将不会执行。
静态文件在哪里
按照约定,静态文件存储在根目录(wwwroot)文件夹中。 我们可以根据需要更改此设置。
静态文件和安全性
静态文件中间件不会检查用户是否有权查看文件。如果只希望授权用户访问文件,则必须将文件存储在wwwroot文件夹之外。 然后,我们可以使用控制器操作并返回FileResult来提供文件。
UseStaticFile是终止中间件静态文件是终止中间件。 如果找到文件,它将返回文件并终止请求管道。仅当找不到所需资源时,它才会调用下一个中间件