gpt4 book ai didi

c# - 如何使用托管 IIS 模块正确设置 HTTP header

转载 作者:IT王子 更新时间:2023-10-29 04:05:16 26 4
gpt4 key购买 nike

我用 C# 编写了自己的托管 IIS HTTP 模块。它的目的是在某些条件下(不能用路由规则处理)简单地设置 X-Forwarded-For 和 X-Forwarded-Proto 请求 header 。该模块必须部署到我们的负载均衡器(就是安装了 ARR 和配置服务器场的 IIS)。由于某些原因, header 已设置但未传输到负载平衡器后面的 Web 服务器。我知道它是因为我检查了失败的请求跟踪输出日志。 Failed Request Tracing logs

这是我们负载均衡器上安装的所有 IIS 模块的屏幕截图:

Ordered module list

如您所见,我的名为“QA.XForwardedHeadersModule”的托管模块在 ApplicationRequestRouting (ARR) native 模块之前加载。但是标题无论如何都不会传输。我什至使用 Wireshark 跟踪了我的请求。根本没有任何 X-Forwarded header 。

这是否意味着托管模块与原生模块不完全兼容,原生模块(如 ARR)看不到托管模块(如我自定义编写的模块)设置的请求 header ?这个问题有任何可能的解决方法吗?

最佳答案

这是一个旧的“未答复”的帖子,所以我想我会加两分钱。添加请求 header 通常可能不起作用,具体取决于 ARR 模块/处理程序将如何处理请求。正如塔伦所说,这可能为时已晚,但还有另一个原因。 ARR 模块可能正在抓取正在接收的原始数据,在这种情况下肯定为时已晚。或者 ARR 处理程序可能正在查看包含在您的通知之前设置的原始 header 的特定服务器变量(例如,如果您添加其他请求 header ,我认为 ALL_RAW 不会更新。)在可能的情况下,ARR 模块正在获取原始缓冲区,您需要提前更新原始数据,如果可能的话,这将是一个全新的复杂程度。

关于c# - 如何使用托管 IIS 模块正确设置 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47980562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com