为什么HttpContext.Request.Url和Request.ServerVariables [“HTTP_HOST”]返回不同的值

时间:2010-12-12 00:12:26

标签: c# url httprequest request.servervariables

我有3个网站从负载平衡的服务器池运行。负载均衡器使用粘性会话来确保会话保留在初始池中。

在网站上,我需要生成一个特定于网站的网址。根据标准程序,我尝试使用HttpContext.Request.Url,但这会返回错误的url。然后我尝试使用Request.ServerVariables [“HTTP_HOST”]并返回正确的url。

有没有人有任何想法?

现场A: Request.Url返回Url A. Request.ServerVariables [“HTTP_HOST”]返回Url A

现场B:

Request.Url返回Url A. Request.ServerVariables [“HTTP_HOST”]返回Url B

在网站C:

Request.Url返回Url A. Request.ServerVariables [“HTTP_HOST”]返回Url C

1 个答案:

答案 0 :(得分:0)

Request.ServerVariables["HTTP_HOST"]返回IIS主机,即您的网站设置为响应的主机名。这可能是也可能不是与为了访问您的页面而执行的URL客户端相同的主机。您看到的行为完全符合逻辑,因为客户端始终执行相同的URL,但负载均衡器会将其发送到不同的IIS实例。

编辑:关于那个说明我很困惑为什么你需要“一个特定于网站的网址”?