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

像在web根目录下的所有文件都会自动的发布为web资源,客户端是可以访问相应的url来读取这些文件的。我们针对某个静态文件的请求其实是通过一个静态文件中间件StaticFiles来处理的。最近需要在.net core网站中访问后缀为pag的文件,发现直接访问404,查看官方文档关于静态文件相关配置,发现需要配置一下.net core的支持访问静态文件的类型。

代码实现
// 堆代码 duidaima.com
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();

总结:

.NET Core默认只支持.css,.js或者图片等常见的静态文件,对于一些特殊的静态文件,我们需要通过静态文件中间件StaticFiles来处理,本案例中就是因为刚开始没有将.pag后缀静态文件做映射处理,所以出现了404错误,我们通过provider.Mappings[".pag"] = "text/html"映射后问题得到解决。

用户评论