ASP.NET 2.0 e 4.0 parecem tratar a URL raiz de maneira diferente na autenticação de formulários
Se tiver o seguinteweb.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>
O aplicativo é um aplicativo ASP.NET 2.0 em execução no Windows 2008R2 / IIS7.5.
Se o pool de aplicativos do site estiver configurado para executar o ASP.NET 2.0 e eu procurarhttp://example.com
entãoDefault.aspx
é renderizado conforme o esperado das regras acima.
No entanto, se o pool de aplicativos estiver definido para executar o ASP.NET 4.0, eu sou redirecionado para a página de logon. Se eu especificar explicitamentehttp://example.com/default.aspx
então tudo está bem edefault.aspx
processa.
Eu tentei reescrever/ -> /default.aspx
(usando o IIS UrlRewriter 2.0), mas como o resultado ainda é o mesmo, sou expulso da página de login.
Eu também tentei isso com um aplicativo ASP.NET 4.0 com o mesmo resultado (que é onde o problema surgiu inicialmente). O motivo pelo qual tentei isso com um aplicativo 2.0 foi verificar se havia uma mudança de comportamento e parece que/
é tratado de forma diferente no 4.0.
Então, para resumir, usando a configuração acima, é observado o seguinte:
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
É uma mudança de bug / quebra ou perdi algo óbvio?
Atualizar:
Cheguei ao final desta questão, veja minha própria resposta abaixo.