静态文件支持
分类: Asp.net Core入门 ◆ 标签: #Asp.Net core基础 #基础 #Web ◆ 发布于: 2023-06-04 20:43:38

静态文件主要是指在ASP.net Core
项目种的包括js
, css
, html
, 图片
等等资产。ASP.net Core会直接向客户端返回这些资产。
使用静态文件中间件
静态文件默认是存储在web root
目录,这个目录默认是在{contentroot}/wwwroot
里,但是也可以使用扩展方法UseWebRoot
来进行改变。在ASP.net Core
的模板里是使用方法CreateDefaultBuilder
来设置Content root
和web root
的。
默认的web root的布局是:
- wwwroot
- css
- js
- lib
启用中间件
直接从模板里可以看到:
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.MapDefaultControllerRoute(); }); }
然后访问的时候可以这样:
<img src="~/images/MyImage.jpg" class="img" alt="My image" />
为在web root之后的静态文件提供服务
例如在wwwroot之外有一个文件夹叫做:MyStaticFiles
那么这样:
// using Microsoft.Extensions.FileProviders; // using System.IO; app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider( Path.Combine(env.ContentRootPath, "MyStaticFiles")), RequestPath = "/StaticFiles" });
这样就可以这样访问了:
<img src="~/StaticFiles/images/red-rose.jpg" class="img" alt="A red rose" />
发送HTTP Response headers
可以这样操作:
const string cacheMaxAge = "604800"; app.UseStaticFiles(new StaticFileOptions { OnPrepareResponse = ctx => { // using Microsoft.AspNetCore.Http; ctx.Context.Response.Headers.Append( "Cache-Control", $"public, max-age={cacheMaxAge}"); } });
关于静态文件还有很多其他平时不太用得上得功能,详细您可以参考这里:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-5.0