gpt4 book ai didi

ASP.NET 2.0 和 4.0 在表单例份验证中似乎以不同方式处理根 url

转载 作者:行者123 更新时间:2023-12-02 12:04:13 25 4
gpt4 key购买 nike

如果有以下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 将按您的方式呈现d 期望上述规则。

但是,如果应用程序池设置为运行 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.aspx2.0              http://example.com/Default.aspx     Renders Default.aspx4.0              http://example.com                  Redirects to Login.aspx4.0              http://example.com/Default.aspx     Renders Default.aspx

这是一个错误/重大更改还是我错过了一些明显明显的东西?

更新:

我已经深入了解了这个问题,请参阅下面我自己的答案。

最佳答案

找到了罪魁祸首。作为我们的 WebDeploy 2.0/WebMatrix 服务器端更改的一部分,WebMatrix Server Validator 推荐此修补程序。 :

MS KB:980368 - A update is available that enables certain IIS 7.0 or IIS 7.5 handlers to handle requests whose URLs do not end with a period

安装此修补程序会导致 ASP.NET 4.0 更改表单例份验证行为,其中仅请求 URL 的域名部分。

更新1:

此 QFE 也是 Windows 2008R2 SP1 的一部分,并且还会以上述方式破坏 ASP.NET 4.0 的表单例份验证。

更新2:

此外,在配置为以 ASP.NET 和经典管道模式运行的应用程序池中运行经典 ASP 应用程序时,这也会破坏默认文档处理。

服务器返回 404.2 - Not Found 错误。

同样的重大更改也适用于 Windows 2008R2 SP1。

更新3:

我向 MS PSS 报告了这一情况,他们确认了行为的重大变化。他们创建了这篇知识库文章来回应我们(可能还有其他人)受到的影响:

Web services may fail on Microsoft Internet Information Services (IIS) 7.5 and Windows 7 Service Pack 1 with .NET Framework 4.0 due to extensionless URL handlers

就我自己而言,如果受到此问题的影响,我基本上会删除(或建议客户)无扩展处理程序:

<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 2.0 和 4.0 在表单例份验证中似乎以不同方式处理根 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com