У меня есть сценарий, что мой балансировщик нагрузки переводит порт 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 С# и VB.NET
Хорошо,
Я получил ответ сам. Я надеюсь, что это решение будет полезно и для других.
Ну, ответ находится в файле web.config. В разделе
<system.web>
<httpRuntime useFullyQualifiedRedirectUrl="false" maxRequestLength="2526" requestLengthDiskThreshold="2526"/>
</system.web>
где важная часть - это false.
useFullyQualifiedRedirectUrl="false"
Это верно по умолчанию.
Вам нужно, чтобы это было перенаправление, или вы можете просто использовать Server.Transfer()?
Перенаправить его в исходное имя хоста, чтобы он прошел через балансировщик нагрузки без явного порта. Переадресация создается (или может быть построена) программно, поэтому вы должны быть в состоянии избежать проблемы.