Кажется, что в ASP.NET 2.0 и 4.0 корневой URL-адрес обрабатывается по-разному при проверке подлинности с помощью форм

Если есть следующий 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

Это ошибка / критическое изменение или я пропустил что-то совершенно очевидное?

Обновление:

Я дошел до сути этой проблемы, см. мой собственный ответ ниже.

5
задан Kev 23 February 2011 в 12:26
поделиться