C# 响应\服务器重写规则不适用于所有响应头

C# 响应\服务器重写规则不适用于所有响应头,c#,iis,url-rewrite-module,C#,Iis,Url Rewrite Module,我在IIS中有一个名为Home running的asp.net网站,我添加了一个重写URL规则,将响应头中的服务器标记更改为我的。它只适用于部分响应,而不是所有响应 例如: 作品(服务器:我的) 但不工作(服务器:Microsoft…) 可以在C:\Windows\System32\inetsrv\config\applicationHost.config中找到我的规则的代码如下: <rewrite> <allowedServerVariables>

我在IIS中有一个名为Home running的asp.net网站,我添加了一个重写URL规则,将响应头中的服务器标记更改为我的。它只适用于部分响应,而不是所有响应

例如: 作品(服务器:我的) 但不工作(服务器:Microsoft…)

可以在C:\Windows\System32\inetsrv\config\applicationHost.config中找到我的规则的代码如下:

<rewrite>
        <allowedServerVariables>
            <add name="RESPONSE_SERVER" />
        </allowedServerVariables>
        <globalRules>
            <rule name="Remove Server">
                <match url=".*" />
                <serverVariables>
                    <set name="RESPONSE_SERVER" value="Mine" />
                </serverVariables>
                <action type="None" />
                <conditions>
                </conditions>
            </rule>
        </globalRules>
    </rewrite>


出于安全原因,我正在删除服务器版本,但如果它不适用于所有响应,它将定义该点。

据我所知,如果您要修改响应头的值。我建议您可以尝试使用url重写出站规则,而不是普通规则

请在application.host文件中添加以下规则:

<rewrite>

    <allowedServerVariables>
        <add name="RESPONSE_SERVER" />
    </allowedServerVariables>
    <outboundRules>
        <rule name="ModifyServer">
            <match serverVariable="RESPONSE_SERVER" pattern=".*" />
            <action type="Rewrite" value="Mine" />
        </rule>
    </outboundRules>
</rewrite>


它确实解决了我上面提到的问题,但仍然有一种来自包含服务器版本的服务器的响应类型:如果我转到“”或“”,将返回该响应类型。我研究发现它是由asp.net生成的资源文件。将确定我是否可以删除该响应或从中删除服务器标记。WebResource.axd响应已缓存,因此当我清除缓存时,它工作正常。现在它工作得很好。重写服务器信息以获得来自SSR的响应是行不通的。