.Net核心请求过滤和文件下载

时间:2018-12-17 21:41:01

标签: asp.net-core web-applications

我们有一个.net核心Web应用程序,该应用程序仅托管一些客户端应用程序更新的文件。

我们决定在其中一个客户端应用程序中添加应用程序见解,并且文件ApplicationInsights.config是更新的一部分。

https://server/path/to/update/ApplicationInsights.config的请求引发404错误。

到目前为止,我已经尝试过:

  1. 在启动时在静态文件定义中添加“ .config”扩展名:无效(这适用于.exe和.dll)
  2. 启用此文件夹的文件夹浏览,仍然无效

这似乎与一些现成的请求过滤有关。

问题是:

如何禁用特定文件夹上的所有下载限制(最佳)

OR

如何禁用* .config文件的所有过滤

提前谢谢

1 个答案:

答案 0 :(得分:3)

这是因为默认的FileExtensionContentTypeProvider不提供*.config文件的映射。

要使其提供*.config文件,只需创建自己的ContentTypeProvider或为*.config添加映射:

var myContentTypeProvider= new FileExtensionContentTypeProvider();
myContentTypeProvider.Mappings.Add(".config","text/plain");

app.UseStaticFiles(new StaticFileOptions{
    RequestPath = "/path/to/update",
    FileProvider = new PhysicalFileProvider(
        Path.Combine(Directory.GetCurrentDirectory(),"path/to/update"),
        ExclusionFilters.None
    ),
    ContentTypeProvider = myContentTypeProvider,
});

[更新]

讨论后,以下Web.Config(由OP负责)有效

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer>
        <security>
            <requestFiltering>
                <fileExtensions>
                    <remove fileExtension=".config" /> 
                    <add fileExtension=".config" allowed="true" />
                </fileExtensions>
            </requestFiltering> 
        </security> 
    </system.webServer> 
</configuration>