Uri.EscapeDataString (Request.Url.AbsoluteUri) неверен в другой среде. Что еще мне следует использовать? - PullRequest
0 голосов
/ 12 декабря 2008

Я генерирую ссылку возврата URL, поэтому, когда пользователь нажимает кнопку закрытия на этой странице, он возвращается к этому ReturnUrl.

т.е. http://localhost:42605/Search.aspx?ReturnUrl=http%3A%2F%2Flocalhost%3A42605%2FStuff%2FViewStuff.aspx%3FProjectId%3D2246

Это прекрасно работает в среде разработчика, но в среде UAT у меня есть

http://app -uat.com / search.aspx? ReturnUrl = HTTP% 3A% 2F% 2Fapp-uat-01.com% 2FStuff% 2FViewStuff.aspx% 3FProjectId% 3D2246

Обратите внимание на дополнительный 01 в параметре ReturnUrl.

Так что для генерации бита ReturnUrl я сейчас использую

Uri.EscapeDataString (Request.Url.AbsoluteUri)

Поскольку у меня нет прямого доступа к среде uat, я не знаю, что точно сработает, до окончания цикла выпуска, так что если я смогу избежать неправильного понимания в первый раз, это было бы полезно.

Глядя на Request.Url в отладке у меня есть возможности

DnsSafeHost или Хост

, который можно использовать с

AbsolutePath или LocalPath или PathAndQuery

или у меня

OriginalString

Или я мог бы вместо этого использовать реферер?

1 Ответ

1 голос
/ 12 декабря 2008

PathAndQuery дает вам относительный путь с переменными строки запроса, поэтому вам не нужно беспокоиться о дополнительном '01' в домене. Просто разберитесь с относительными путями.

Из любопытства сбалансирована ли нагрузка в вашей среде? Похоже, что ваше приложение не знает, на какой домен оно отвечает. Это может (возможно) произойти, если запрос попадает на сбалансированный сервер напрямую по сравнению с точкой балансировки нагрузки, или балансировщик нагрузки перенаправляет запросы в определенный для машины домен?

Я бы запросил информацию у администратора вашей сети. Если вы подробно опишите, что вы делаете, особенно если ваше приложение иногда считает, что оно реагирует на app-uat-01, они могут сразу увидеть проблему.

...