ASP.NET窗体身份验证对请求失败。原因:提供的票证已过期/无效

    在事件查看器中看到很多下面的提示信息:

Event code: 4005 
Event message: 请求的窗体身份验证失败。 原因: 提供的票证无效。 
Event time: 
Event time (UTC): 
Event ID: 
Event sequence: 
Event occurrence: 
Event detail code: 50201 

   

Event code: 4005 
Event message: 请求的窗体身份验证失败。 原因: 提供的票证已过期。 
Event time: 
Event time (UTC): 
Event ID: 
Event sequence: 
Event occurrence: 
Event detail code: 50202 

  

看着这个错误心烦。网上找了很多处理方法,感觉都不对症。于是反编译了,源代码,发觉如下顺序查找:

FormsAuthenticationModule.OnAuthenticate-->ExtractTicketFromCookie

这个函数中可以看到对FormsAuthentication.Decrypt调用。

在获取到票据后,会进行判断

判断产生俩结果,一个是null,一个是过期

null会写事件日志WebBaseEvent.RaiseSystemEvent(null, 0xfa5, 0xc419);

过期也会写事件日志 WebBaseEvent.RaiseSystemEvent(null, 0xfa5, 0xc41a);

0xfa5 4005

0xc419 50201

0xc41a 50202

大家对照一下就明白了。

所以 这个提示没办法去除。除非通过配置文件把这样的提示都屏蔽了。屏蔽方法如下:

<healthMonitoring>
      <rules>
        <remove name="Failure Audits Default" />
      </rules>
    </healthMonitoring>

  

原文地址:https://www.cnblogs.com/cxd4321/p/14920729.html