.NET 2.0 Web App身份验证失败:“提供的故障单无效”

时间:2011-12-02 19:08:21

标签: asp.net .net forms-authentication

我有一个带有2.0应用程序的.NET 4.0应用程序。 Web应用程序不在多服务器环境中;只有一台服务器参与提供这些请求。两个应用程序都使用自定义身份验证,两个应用程序都具有相同的machineKey属性和值。当我访问2.0应用程序时,事件日志显示以下消息:

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied was invalid. 
Event time: 12/2/2011 11:36:49 AM 
Event time (UTC): 12/2/2011 5:36:49 PM 
Event ID: 2068ad6957964f75885301fc2b58ddfe 
Event sequence: 2 
Event occurrence: 1 
Event detail code: 50201

我尝试在Web.config中的forms元素上将ticketCompatibilityMode属性设置为Framework20,但这并没有解决问题。由于此错误,用户未被授权,因此通常的对象(HttpContext)没有填充用户信息。

有谁知道如何修复此错误,以便身份验证适用于2.0应用程序? (顺便说一下,我的确计划将2.0应用程序升级到4.0,但此时不能完成此卡)

5 个答案:

答案 0 :(得分:5)

如果有人遇到同样的问题,我可以通过在.NET 2.0应用程序的Web.config的<appSettings>部分添加一些条目来修复此错误。添加的条目是:

<add key="aspnet:UseLegacyEncryption" value="true" />
<add key="aspnet:UseLegacyMachineKeyEncryption" value="true" />

编辑(2012-05-04):在服务器上安装安全公告MS11-100后,2.0应用程序再次验证了身份验证。将以下内容添加到4.0应用程序的Web.config中修复了该问题:

<add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />

答案 1 :(得分:2)

您必须在2个应用程序上拥有相同的框架。

httpRuntime targetFramework =“4.5”

答案 2 :(得分:1)

为了将aport信息用于上一篇文章,我可以将这些密钥添加到 APP (均为4.0)web.config:

    <add key="aspnet:UseLegacyEncryption" value="true" />
    <add key="aspnet:UseLegacyFormsAuthenticationTicketCompatibility" value="true" />

答案 3 :(得分:0)

此问题还有一个原因。即使在同一台机器上,如果您的某个应用程序具有相同的IIS和相同的.NET框架

<httpRuntime requestValidationMode="2.0" />

然后共享身份验证cookie将无效。

删除requestValidationMode可解决问题。但有时你不能这样做,它需要留在那里。我还没发现在这种情况下该做什么

答案 4 :(得分:0)

我有同样的问题。在我的情况下,我在同一台服务器上有两个不同的应用程序,两者的名称属性相同。

           

解决方案是为每个应用程序使用唯一的名称。请参阅此处的模式详情https://msdn.microsoft.com/en-us/library/1d3t3c61(v=vs.85).aspx

这是cookie名称,如果您使用相同的名称,则会覆盖cookie。