我用C#编写了自己的托管IIS HTTP模块。它的目的是在某些条件下(这些条件无法通过路由规则处理)简单设置X-Forwarded-For和X-Forwarded-Proto请求头。该模块必须部署到我们的负载均衡器上(即安装了ARR并配置了服务器群集的IIS)。由于某些原因,头被设置了,但未传输到负载均衡器后面的Web服务器。我知道这是因为我检查了失败请求跟踪输出日志。
以下是我们的负载均衡器上安装的所有IIS模块的截图:
如您所见,我的托管模块名为“QA.XForwardedHeadersModule”,在应用请求路由(ARR)本机模块之前加载。但是,这些标头仍然没有传输。我甚至使用Wireshark跟踪了我的请求。根本没有任何X-Forwarded标头。
这是否意味着托管模块与本机模块不完全兼容,并且本机模块(例如ARR)无法看到使用托管模块(例如我的自定义编写的模块)设置的请求标头?是否有任何可能解决此问题的方法?
![Failed Request Tracing logs](https://istack.dev59.com/aKagI.webp)
这是否意味着托管模块与本机模块不完全兼容,并且本机模块(例如ARR)无法看到使用托管模块(例如我的自定义编写的模块)设置的请求标头?是否有任何可能解决此问题的方法?
X-Forwarded-For
。因此,在您的情况下,ARR很可能会删除您设置的内容。您不应该试图劫持ARR(因为这可能会导致更多问题),因此请尝试上面提到的解决方法,并让ARR保持原样。 - Lex Li