.NET Core 访问不常见的静态文件类型

背景

在Web开发中,如js脚本、css样式、图片等的静态文件通常占据了很大一部分。ASP.NET Core提供了三个中间件来处理这种针对静态文件的请求。利用它们我们不经可以将物理文件发布为通过http请求可以去获取的外部资源。还可以将所在的物理结构也给呈现出来。通过http请求获取的外部资源大部分都来源于存储在服务器磁盘上的静态文件。

像在web根目录下的所有文件都会自动的发布为web资源,客户端是可以访问相应的url来读取这些文件的。我们针对某个静态文件的请求其实是通过一个静态文件中间件StaticFiles来处理的。.

最近需要在.net core网站中访问后缀为pag的文件,发现直接访问404,查看官方文档关于静态文件相关配置,发现需要配置一下.net core的支持访问静态文件的类型。

代码实现

DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add("index.html");
app.UseDefaultFiles(defaultFilesOptions);


var provider = new FileExtensionContentTypeProvider();
// Add new mappings,将properties文件映射为text/html
provider.Mappings[".pag"] = "text/html";
app.UseStaticFiles(new StaticFileOptions
{
    ContentTypeProvider = provider
});



app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

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

app.Run();

参考

https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files?view=aspnetcore-5.0