.NET JavaScript无法检索文件

时间:2018-08-04 23:05:01

标签: javascript c# .net

在我的.NET Core 2应用程序中,“ wwwroot”部分中有一个名为“ data”的目录,其中包含一些文件。在JavaScript中,我正在调用这些文件以将它们加载到另一个JS函数中。

var filename = ["data/file1.kml", "data/file2.kml", "data/file3.kml"];

我认为也许我需要在单词data之前添加一个〜/,但这似乎并没有改变。在Chrome控制台中,JavaScript给出了未找到的404。

在非.net站点(php站点)中,我只提供/data/filename.ext即可轻松加载文件。

如何从.net中的目录中检索文件?

编辑:

所以我在该目录中添加了一个.txt文件,可以通过以下方式查看它:

https://localhost:44300/data/info.txt

我应该能够转到下面查看其中一个文件

https://localhost:44300/data/file1.kml

数据目录中的所有文件都不是.net站点的一部分。他们正坐在服务器上的文件夹中。我也将它们复制到本地进行调试。该文件夹中的文件将一直更改,名称也将更改。发生这种情况时,我已经有一些获取目录内容的东西,只是无法加载.kml文件,但将加载.txt文件。

编辑:

我制作了一个文件的副本,并用xml替换了kml作为扩展名,并且确实起作用。

https://localhost:44300/data/test.xml

与.KML扩展名有关。我确实已将MIME类型添加到服务器上(它没有进行任何更改),但是此问题也存在于localhost上,我不相信您可以编辑MIME类型。可能需要在startup.cs文件中添加一些东西来支持不常见的扩展类型?

如何在.NET应用程序本身中添加对文件扩展名类型的支持?

我启用了目录列表,.xml和.txt文件显示/加载正常,但是.kml和.gpx文件显示404。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:2)

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 });
}

参考:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files?view=aspnetcore-2.1&tabs=aspnetcore2x