在我的 .NET Core 2 应用程序中,“wwwroot”部分中有一个名为“data”的目录,其中包含一些文件。在 JavaScript 中,我调用这些文件以将它们加载到另一个 JS 函数中。
var filename = ["data/file1.kml", "data/file2.kml", "data/file3.kml"];
我想也许我需要在数据这个词前添加一个 ~/但这似乎并没有改变任何东西。在 Chrome 控制台中,JavaScript 给出了 404 not found。
在非 .net 站点(php 站点)中,我可以只提供/data/filename.ext 并可以轻松加载文件。
如何从 .net 中的目录检索文件?
编辑:
所以我在该目录中添加了一个 .txt 文件,我可以通过以下方式查看它
https://localhost:44300/data/info.txt
我应该可以去下面查看其中一个文件
https://localhost:44300/data/file1.kml
数据目录中的所有文件都不是 .net 站点的一部分。它们位于服务器上的一个文件夹中。我也将它们复制到本地以进行调试。该文件夹中的文件会一直更改,名称也会更改。发生这种情况时,我已经有一些东西可以获取目录的内容,我只是无法加载 .kml 文件,但会加载 .txt 文件。
编辑:
我复制了其中一个文件并将 kml 替换为 xml 作为扩展名,这确实有效。
https://localhost:44300/data/test.xml
与 .KML 扩展名有关。我确实将 MIME 类型添加到服务器(这没有改变任何东西),但这个问题也在 localhost 上,我认为它没有你可以编辑的 MIME 类型。 startup.cs 文件中是否可能需要添加某些内容以支持不常见的扩展类型?
如何在 .NET 应用程序本身中添加对文件扩展名类型的支持?
我启用了目录列表,.xml 和 .txt 文件显示/加载正常,但 .kml 和 .gpx 文件显示 404。
最佳答案
IIS(通常)不会提供其 mime 映射中没有类型的静态文件。默认情况下,.kml
和 .gpx
都不在其 mime 映射中。
在 IIS 上,您可以通过以下方式添加 mime 类型:IIS > Mime 类型
在 ASP.NET Core 中,您可以这样做:
public void Configure(IApplicationBuilder app)
{
// Set up custom content types - associating file extension to MIME type
var provider = new FileExtensionContentTypeProvider();
// Add new mappings
provider.Mappings[".kml"] = "application/vnd.google-earth.kml+xml";
provider.Mappings[".gpx"] = "application/gpx+xml";
app.UseStaticFiles(new StaticFileOptions { ContentTypeProvider = provider });
}
引用:
关于javascript - .NET JavaScript 无法检索文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51690193/