Как переписать Response.Redirect, чтобы порт не приходил с ним - PullRequest
2 голосов
/ 12 мая 2009

У меня есть сценарий, что мой балансировщик нагрузки переводит порт 80 извне в порт 801, который является локальным. И когда дело доходит до сервера, сервер, очевидно, видит порт 801, и в Response.Redirect он пытается внедрить порт 801 в URL-адрес, на который он перенаправляет, но это не желаемое решение для меня.

Я думаю о том, чтобы: 1. Перезаписать Response.Redirect, чтобы я удалил порт из него. 2. В web.config есть какая-то конфигурация, чтобы игнорировать этот порт. 3. Самый неприятный способ решить эту проблему - изменить приложение целиком, чтобы использовать полные URL-адреса внутри Response.Redirect, что является большой болью.

Есть ли хорошее решение этой проблемы?

Окружающая среда: Windows Vista, Windows 2003 Server, Windows 2008 Server IIS 6, IIS 7 ASP.NET C # & VB.NET

Ответы [ 3 ]

5 голосов
/ 26 мая 2009

Хорошо,

Я получил ответ сам. Я надеюсь, что это решение будет полезно и для других.

Ну, ответ находится внутри web.config. Под

<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="false" maxRequestLength="2526" requestLengthDiskThreshold="2526"/>
</system.web>

, где важная часть является ложью.

useFullyQualifiedRedirectUrl="false"

Это верно по умолчанию.

0 голосов
/ 12 мая 2009

Перенаправьте его на исходное имя хоста, чтобы он проходил через балансировщик нагрузки без какого-либо явного порта. Перенаправленный создается (или может быть построен) программно, поэтому вы должны быть в состоянии избежать проблемы.

0 голосов
/ 12 мая 2009

Вам нужен перенаправление, или вы можете просто использовать Server.Transfer ()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...