【问题标题】:Disable IIS Request Filtering for certain paths禁用某些路径的 IIS 请求过滤
【发布时间】:2012-06-16 16:19:02
【问题描述】:

有什么方法可以配置 IIS 7.0+(或 7.5+),以便完全禁用某些路径的请求过滤。也就是说,

http://host.local/foo/bar.cs

被禁止(因为在applicationHost.config 中明确禁止提供*.cs 文件),但是

http://host.local/foo/allow-all/bar.cs

是允许的。

【问题讨论】:

    标签: iis iis-7 requestfiltering


    【解决方案1】:

    在您的allow-all 目录中,您可以使用以下配置创建一个 web.config 文件:

    <configuration>
        <system.webServer>
            <security>
                <requestFiltering>
                    <fileExtensions>
                        <remove fileExtension=".cs" />
                    </fileExtensions>
                </requestFiltering>
            </security>
            <staticContent>
                <mimeMap fileExtension=".cs" mimeType="text/plain" />
            </staticContent>
        </system.webServer>
    </configuration>
    

    此配置从请求过滤中删除了 .cs 扩展。此外,为了让 IIS 正确地提供内容,它需要 MIME 类型,因此将 .cs 扩展名添加为 text/plain。

    这些更改也将应用于allow-all 的所有子目录。此配置适用于集成应用程序池。 Classic 可能需要额外的更改,因为有些 HTTP 处理程序也明确禁止 .cs。

    【讨论】:

    • 很好,但我没有 /allow-all 路径本身:它是由 ASP.NET MVC 路由处理的动态 URL。在这种情况下这可能吗?
    • @Anton 如果它是动态的,那么最好自己尝试为它们服务——为某些脚本创建 url 重写规则,该脚本将读取请求文件的内容并将其发送到浏览器中。我只是不确定 URL 重写模块是在请求过滤之前还是之后执行的——我认为是之后(对于真实/现有文件),但对于不存在的 URL 可能并非如此。
    • @LazyOne URL 重写似乎发生在请求过滤之后。或者,至少在我在过滤器中为相关路径添加 之前,我安装的自定义处理程序一直处于阻塞状态。
    猜你喜欢
    • 2016-03-29
    • 2014-02-23
    • 2010-09-21
    • 2021-02-19
    • 2015-05-21
    • 2020-09-09
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多