ASP.NET 2.0和4.0似乎在Forms身份验证中以不同方式处理根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>
该应用程序是在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 http://example.com/Default.aspx Renders Default.aspx 这是一个错误/突破性变化还是我错过了一些明显的错误? 更新: 我已经到了这个问题的底部,请看下面我自己的答案. 解决方法找到了罪魁祸首.作为WebDeploy 2.0 / WebMatrix服务器端更改的一部分,WebMatrix Server Validator建议修改此修补程序:
安装此Hot Fix会导致ASP.NET 4.0更改表单身份验证行为,其中只请求URL的域名部分. 更新1: 此QFE也是Windows 2008R2 SP1的一部分,也将以上述方式破坏ASP.NET 4.0的表单身份验证. 更新2: 此外,当在配置为以ASP.NET和& a运行的应用程序池中运行经典ASP应用程序时,这也会破坏默认文档处理.经典管道模式. 服务器返回404.2 – Not Found错误. 同样的重大更改适用于Windows 2008R2 SP1. 更新3: 我向MS PSS报告了这一点,他们证实了行为的突然变化.他们创建了这篇知识库文章,以回应我们(以及可能是其他人)受到影响的文章:
在我自己的情况下,如果受此问题的影响,我基本上删除(或建议客户)无扩展的处理程序: <configuration>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrl-Integrated-4.0" />
<remove name="ExtensionlessUrl-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
</handlers>
</system.webServer>
</configuration> (编辑:东莞站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net实现生成缩略图及给原始图加水印的方法示例
- ASP.NET 根据汉字获取汉字拼音的首字母(含多音字)
- ASP.NET MVC API 接口验证的示例代码
- asp.net-mvc – 如何将行的模型从Kendo Grid传递到可编辑的
- asp.net-mvc – 如何在ASP.NET MVC4中使用具有唯一标识符UR
- asp.net – Request.Url.AbsoluteUri和重写的URL
- asp.net中使用repeater和PageDataSource搭配实现分页代码
- asp.net-mvc – 为什么在ASP.NET MVC中使用lambdas而不是反
- asp.net-mvc – 在ajax请求中返回PDF
- ASP.NET MVC编辑器模板和Html.EditorFor(…) – 如何消除类
- asp.net操作xml增删改示例分享
- asp.net web.config加密解密方法
- asp.net核心 – 如何排除在ASP.NET Core中发布文
- asp.net-mvc – Nhibernate / MVC:在View中处理
- jQuery Ajax方法调用 Asp.Net WebService 的详细
- asp.net fileupload控件上传文件与多文件上传
- asp.net – 允许服务器/ usercontrol上的任何属性
- asp.net – 我可以重新发布或携带POST数据(如果是
- asp.net页面SqlCacheDependency缓存实例
- asp.net – 如何正确地大写希腊字在.NET?
