Переадресация портов маршрутизатора и HttpContext.Current.Request.Url - PullRequest
3 голосов
/ 22 июля 2009

Вот сценарий. У нас есть маршрутизатор, который пересылает запросы на разные тестовые сайты. Например, http://www.ourSite.com:8051 пересылается с маршрутизатора на веб-сервер, который находится на порту 80. Тестовые веб-сайты - это виртуальные каталоги одного веб-сайта, работающего на IIS6 (Windows Server 2003).

Часть нашего приложения рассылает электронные письма, использующие базовый URL для создания некоторых ссылок в приложении. Вот базовый URL, создаваемый при запуске приложения:

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Url.Authority,
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));

Итак, скажем, один из наших тестовых сайтов выглядит следующим образом: http://www.ourSite.com:8051/client1. Я бы ожидал, что siteBaseUrl будет выглядеть следующим образом, http://www.ourSite.com:8051/client1,, когда на самом деле он будет выглядеть так http://www.ourSite.com/client1 (Я пытался найти такой вопрос в StackOverflow, но не нашел ни одного. Возможно, я не искал с правильными ключевыми словами или мне нужно больше кофе. Любая помощь по этому вопросу будет принята с благодарностью.

Ответы [ 2 ]

5 голосов
/ 22 июля 2009

HttpContext.Current.Request.Url основан на ресурсе, запрошенном IIS, он не представляет URL-адрес запроса клиента. Однако вы можете использовать свойство Host из заголовка HTTP.

siteBaseUrl = string.Format("{0}://{1}{2}",
                HttpContext.Current.Request.Url.Scheme,
                HttpContext.Current.Request.Headers["host"],
                HttpContext.Current.Request.ApplicationPath.TrimEnd('/'));
0 голосов
/ 22 июля 2009

Если ваш порт удаляет номер порта, вы всегда можете использовать javascript, чтобы получить URL и просто отправить его на сервер.

...