2015-07-28 4 views
0

У нас есть два виртуальных URL, который использует WebSEAL для нашей внутренней сети Appication, таких как,Получение виртуального URL в C#

https://third-party-site.com/myapplication/Default.aspx
https://my-application.com/Default.aspx

который внутри указывает на https://original-url.com:8080/Default.aspx после успешной аутентификации из своих сайтов.

Я хочу получить текущий URL-адрес с страницы Default.aspx. Я попытался с Request.Url, но он возвращает исходный URL. то есть. https://original-url.com:8080/Default.aspx

Для примера. если я получаю доступ к странице по умолчанию от https://third-party-site.com/myapplication/, тогда он должен вернуть текущий URL как https://third-party-site.com/myapplication/Default.aspx.

В настоящее время она возвращается в https://original-url.com:8080/Default.aspx

Есть ли способ, чтобы получить сам виртуальный URL?

ответ

0

Request.Url возвращает https://original-url.com:8080/Default.aspx, потому что это то, что получает IIS. Вы не описываете свою инфраструктуру, но я считаю, что перед IIS у вас есть балансировщик нагрузки или какой-то роутер. Часто (де-факто стандарт), что эти службы вводят HTTP-заголовок, который называется X-Forwarded-For. Вы можете попробовать получить что:

if (Request.Headers["X-Forwarded-For"].Count > 0) { ... // use the real domain } 

Если это не удается, вы должны проверить документацию вашей обработки запросов до проведения IIS службы.