使用JavaScript加载GeoJSON到Azure Maps时出现404错误(Razor Pages项目)
解决Razor Pages加载GeoJSON到Azure Maps的404问题
1. 让GeoJSON文件随构建同步到输出目录
右键data文件夹里的每个GeoJSON文件(或整个data文件夹),打开属性面板:
- 把「复制到输出目录」改成如果较新则复制或始终复制
- 确认「生成操作」设置为内容
这样每次构建项目时,data文件夹会被同步到网站根目录对应的输出路径,https://localhost:7128/data/file0.geojson就能正常访问。
2. 检查静态文件服务配置
打开Program.cs,确保已经启用静态文件服务(Razor Pages默认会加,但保险起见核对一下):
var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorPages(); var app = builder.Build(); // 这行必须有,负责提供静态文件访问 app.UseStaticFiles(); app.UseRouting(); app.MapRazorPages(); app.Run();
如果你的data文件夹不在wwwroot目录下,需要额外加一段配置,让静态文件中间件识别这个目录:
// 配置根目录下的data文件夹作为静态文件源 app.UseStaticFiles(new StaticFileOptions { FileProvider = new PhysicalFileProvider( Path.Combine(builder.Environment.ContentRootPath, "data")), RequestPath = "/data" });
3. 修正加载路径写法
加载函数里别写完整域名,用相对路径/data/file0.geojson就行,既能适配本地调试也能适配生产环境。
4. 关于本地路径的限制
浏览器出于安全限制,不允许直接加载file:///开头的本地文件,所以必须通过网站的HTTP/HTTPS URL访问,前面的步骤就是把GeoJSON文件变成网站可访问的静态资源,解决这个问题。
内容的提问来源于stack exchange,提问作者Erik Bussing
相关产品推荐
相关产品推荐

