在我的.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。
答案 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 });
}
参考: