Если есть следующий web.config
:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="MembershipCookie"
loginUrl="Login.aspx"
protection="All"
timeout="525600"
slidingExpiration="true"
enableCrossAppRedirects="true"
path="/" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
<location path="Default.aspx">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Приложение представляет собой приложение ASP.NET 2.0, работающее в Windows 2008R2 / IIS7.5.
Если пул приложений сайта настроен для запуска Мы с ASP.NET 2.0 просматриваем http://example.com
, тогда Default.aspx
отображается, как и следовало ожидать из правил выше.
Однако если приложение пул настроен на запуск ASP.NET 4.0. Меня перенаправляют на страницу входа. Если я явно укажу http://example.com/default.aspx
, тогда все будет хорошо, и default.aspx
отобразит.
Я попытался переписать / - > /default.aspx
(с использованием IIS UrlRewriter 2.0), но результат все тот же, меня выкидывают на страницу входа.
Я также пробовал это с ASP.NET 4. 0 с тем же результатом (именно здесь изначально возникла проблема). Причина, по которой я попробовал это с приложением 2.0, заключалась в том, чтобы посмотреть, изменилось ли поведение, и кажется, что /
обрабатывается по-другому в 4.0.
Итак, подведем итог, используя конфигурацию выше наблюдается следующее:
ASP.NET Version Url Behaviour ------------------------------------------------------------------------- 2.0 http://example.com Renders Default.aspx 2.0 http://example.com/Default.aspx Renders Default.aspx 4.0 http://example.com Redirects to Login.aspx 4.0 http://example.com/Default.aspx Renders Default.aspx
Это ошибка / критическое изменение или я пропустил что-то совершенно очевидное?
Обновление:
Я дошел до сути этой проблемы, см. мой собственный ответ ниже.