加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET 2.0和4.0似乎在Forms身份验证中以不同方式处理根URL

发布时间:2020-12-15 19:59:13 所属栏目:asp.Net 来源:网络整理
导读:如果有以下web.config: configuration system.web authentication mode="Forms" forms name="MembershipCookie" loginUrl="Login.aspx" protection="All" timeout="525600" slidingExpiration="true" enableCrossAppRedirects="true" path="/" / /authentic
如果有以下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建议修改此修补程序:

07001

安装此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报告了这一点,他们证实了行为的突然变化.他们创建了这篇知识库文章,以回应我们(以及可能是其他人)受到影响的文章:

07002

在我自己的情况下,如果受此问题的影响,我基本上删除(或建议客户)无扩展的处理程序:

<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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读