Почему HttpContext.Request.Url и Request.ServerVariables["HTTP_HOST"] возвращают разные значения
У меня есть 3 веб-сайта, которые запускаются из пула серверов с балансировкой нагрузки. Балансировщик нагрузки использует липкие сеансы, чтобы сеанс оставался в исходном пуле.
На веб-сайте мне нужно создать URL, специфичный для веб-сайта. В соответствии со стандартной процедурой я пытался использовать HttpContext.Request.Url, но это возвращает неправильный URL. Затем я попытался использовать Request.ServerVariables["HTTP_HOST"], и это возвращает правильный URL.
У кого-нибудь есть какие-либо идеи?
На сайте A: Request.Url возвращает URL-адрес. Request.ServerVariables["HTTP_HOST"] возвращает URL-адрес A
На сайте B:
Request.Url возвращает URL-адрес. Request.ServerVariables["HTTP_HOST"] возвращает URL-адрес B
На сайте C:
Request.Url возвращает Url A Request.ServerVariables["HTTP_HOST"] возвращает Url C
1 ответ
Request.ServerVariables["HTTP_HOST"]
вернуть хост IIS, т.е. имя хоста, на которое настроен ваш сайт. Это может быть, а может и не быть тем же хостом, что и в URL-клиенте, запущенном для доступа к вашей странице. Поведение, которое вы видите, совершенно логично, поскольку клиент всегда выполняет один и тот же URL-адрес, но балансировщик нагрузки отправляет его в разные экземпляры IIS.
редактировать: на этой заметке я не понимаю, зачем вам нужен "URL, специфичный для сайта"?