.net core dotnet core 3未在IIS上读取X转发主机

.net core dotnet core 3未在IIS上读取X转发主机,.net-core,.net-core-3.1,.net Core,.net Core 3.1,我有一个新的dotnet core MVC应用程序,它位于一个ARR IIS代理之后,该代理不读取X-FORWARDED-HOST头 具体地说,我需要正确设置主机,因为我正在使用openID Connect,它需要编写正确的重定向URL 它可以在我的VS dev服务器上工作,但不能在我的暂存服务器上工作 现在所有代码都使用example.com来替换我的真实域 startup.cs var forwardingOptions=new ForwardedHeadersOptions() { For

我有一个新的dotnet core MVC应用程序,它位于一个ARR IIS代理之后,该代理不读取X-FORWARDED-HOST头

具体地说,我需要正确设置主机,因为我正在使用openID Connect,它需要编写正确的重定向URL

它可以在我的VS dev服务器上工作,但不能在我的暂存服务器上工作

现在所有代码都使用example.com来替换我的真实域

startup.cs

var forwardingOptions=new ForwardedHeadersOptions()
{
ForwardedHeaders=ForwardedHeaders.All,
AllowedHosts=新列表{“*.example.com”},
RequireHeaderSymmetry=假
};
应用程序UseForwardedHeader(转发选项);
控制器:

var ret=new StringBuilder();
foreach(Request.Headers中的var头)
{
ret.AppendLine(header.Key+“:”+header.Value);
}
返回内容(Request.Host+“\r\n”+ret.ToString());
输出测试(编辑以删除不相关的标题)

暂存IIS:

web-test.example.com
Host:web-test.example.com
X-FORWARDED-HOST:newdev.example.com
X-FORWARDED-PORT:443
X-FORWARDED-PROTO:https
X-Original-URL:/file-downloader/
X-Forwarded-For:10.101.40.1:10400
X-ARR-SSL: EDITED OUT
X-ARR-LOG-ID:d2224167-c14f-43e0-af40-86bfd360d22f
重写规则:

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
    <match url="^file-downloader/(.*)" />
    <action type="Rewrite" url="https://web-test.example.com/file-downloader/{R:1}" />
      <serverVariables>
          <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
          <set name="HTTP_X_FORWARDED_PORT" value="443" />
          <set name="HTTP_X_FORWARDED_PROTO" value="https" />
      </serverVariables>
</rule>

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
    <match url="^file-downloader/(.*)" />
    <action type="Rewrite" url="https://web-test.example.com/file-downloader/{R:1}" />
      <serverVariables>
          <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
          <set name="HTTP_X_FORWARDED_PORT" value="443" />
          <set name="HTTP_X_FORWARDED_PROTO" value="https" />
      </serverVariables>
</rule>