C# IIS反向代理干扰重定向位置标头

C# IIS反向代理干扰重定向位置标头,c#,asp.net,iis,url-rewriting,iis-7,C#,Asp.net,Iis,Url Rewriting,Iis 7,我在ASP.Net站点上有以下重写规则,以使IIS充当反向代理: <rewrite> <rules> <rule name="AppReverseProxy" enabled="true" stopProcessing="true"> <match url="([d|u|c]/.*)" /> <action type="Rewrite" url="http://127.0

我在ASP.Net站点上有以下重写规则,以使IIS充当反向代理:

<rewrite>
    <rules>
        <rule name="AppReverseProxy" enabled="true" stopProcessing="true">
            <match url="([d|u|c]/.*)" />
            <action type="Rewrite" url="http://127.0.0.1:12949/{R:1}" />
        </rule>
    </rules>
</rewrite>

因此,基本上,路径为
domain.com/u/*
domain.com/d/*
domain.com/c/*
的任何内容都将被转发到本地服务器。这很好,通常我到现在为止都没有问题

我让本地服务器返回一个
301永久重定向
,并将
位置
头设置为子域,如:
subdomain.domain.com/somePath
。此子域指向完全不同的服务器


问题是IIS正在重写
位置
头,使其看起来像
domain.com/somePath
,它正在完全删除子域。我通过访问
domain.com:12949
上的站点确认这是IIS问题,并将其正确重定向到子域。如何阻止IIS从本地服务器重新写入
位置
头?

Url rewrite可以在响应中重写头,但默认情况下不应这样做。由于这未在网站的重写规则中配置,因此应用程序请求路由模块很可能在服务器级别启用

在IIS管理器中,选择当前服务器(而不是网站),打开
应用程序请求路由
,在右侧列中会有一个选项
服务器代理设置
。在这里,您将看到“在响应头中反向重写主机”选项。如果勾选了-取消勾选,你的问题就会得到解决

此URL中有一些ARR模块窗口的屏幕截图供参考:

如您所见,我在问题中发布了我的配置-没有传出重写规则,没有选中重写响应头的选项。我的意思是,应用程序请求路由选项与您的配置文件无关,也没有存储在那里。通常,当您使用url重写模块配置反向代理时,IIS会询问您是否要安装ARR。如果您同意,IIS会安装它并为您检查其中的“反向重写主机响应头”。因此,您可能甚至不知道您正在使用此模块。此模块甚至不位于IIS的网站级别,而是位于服务器级别。这篇文章有我的意思截图-这是正确的,谢谢。我对答案进行了编辑,使其更加清晰,并授予了赏金。