Razor Pages项目如何从wwwroot加载Wexbim文件解决404报错
问题原因
你遇到的404错误不是因为文件不存在,而是ASP.NET Core默认的静态文件中间件没有注册.wexbim扩展名的MIME类型,服务器会默认拒绝返回未注册扩展名的静态文件,因此抛出404错误。
解决步骤
1. 注册.wexbim格式的MIME类型
修改项目的Program.cs文件(.NET 6及以上版本),在静态文件中间件配置中添加对应扩展名的MIME映射:
var builder = WebApplication.CreateBuilder(args); // 原有服务注册逻辑 builder.Services.AddRazorPages(); var app = builder.Build(); // 配置自定义MIME类型 var contentTypeProvider = new FileExtensionContentTypeProvider(); // 同时兼容大小写后缀 contentTypeProvider.Mappings[".wexbim"] = "application/octet-stream"; contentTypeProvider.Mappings[".wexBIM"] = "application/octet-stream"; // 替换默认静态文件配置 app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = contentTypeProvider }); // 原有中间件配置逻辑 app.UseRouting(); app.MapRazorPages(); app.Run();
如果是.NET 5及以下版本,在Startup.cs的Configure方法中做相同配置即可。
2. 修正前端加载路径
Razor语法中的~路径符号仅在服务端渲染的内容中会被解析,前端JS代码中直接写~不会被识别,需要修改加载路径:
var viewer = new xViewer('viewer'); // 写法1:用Razor的Url.Content方法解析路径(推荐,适配不同部署路径) viewer.load("@Url.Content("~/Uploads/SampleHouse.wexbim")"); // 写法2:直接写绝对路径,适用于站点部署在根域名的场景 // viewer.load("/Uploads/SampleHouse.wexbim"); viewer.start();
3. 验证配置
配置完成后启动项目,直接在浏览器地址栏输入http://你的站点地址/Uploads/SampleHouse.wexbim,如果能正常触发文件下载,说明静态文件配置生效,前端即可正常加载文件。
内容的提问来源于stack exchange,提问作者Ahmed Mostafa
相关产品推荐
相关产品推荐

