如果有以下内容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>
Run Code Online (Sandbox Code Playgroud)
该应用程序是在Windows 2008R2/IIS7.5上运行的ASP.NET 2.0应用程序.
如果站点的应用程序池配置为运行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 …