背景:我在C#中使用ASP.Net 3.5开发了一个Web应用程序。它运行良好,但现在有一些用户报告他们有时收到错误。我试图复制错误,但一直很难。有一次,当我让应用程序坐下时,我后来回来并尝试移动它并且它出错了。我认为这与超时有关,但我使用的是视图状态。
有什么想法吗?当我查看eventLog时,我确实看到了以下错误条目。
感谢您的帮助和想法!
约翰
我的事件日志有以下错误:
活动代码:4005
事件消息:请求的表单身份验证失败。原因:提供的故障单已过期。
活动时间:2008年3月14日13:19:26
活动时间(UTC):14/03/2008 13:19:26
事件ID:d9f0333c2eed46e0b0207da69d2ea70e
事件顺序:154
事件发生:5
活动详情代码:50202
活动代码:3005
事件消息:发生了未处理的异常。
活动时间:3/12/2009 7:49:59 AM
活动时间(UTC):3/12/2009 11:49:59 AM
事件ID:590ac0f6ad734d988e9e02f0fb7800eb
事件顺序:52
事件发生:1
活动详情代码:0
申请信息:
Application domain: /LM/W3SVC/32/ROOT-1-128813294498061103
Trust level: Full
Application Virtual Path: /
Application Path: C:\Home\LocalUser\ucpga\Web\
Machine name: 169349-WEB2
流程信息:
Process ID: 6912
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
这是最新的错误:
活动代码:4009 事件消息:Viewstate验证失败。原因:视图状态提供了完整性检查失败。 活动时间:2009年3月15日10:26:27 PM 活动时间(UTC):3/16/2009 2:26:27 AM 事件ID:3b5be134005e49c3b40400bcaa5cb48d 事件顺序:56 事件发生:1 活动详情代码:50203
申请信息: 应用领域:/ LM / W3SVC / 32 / ROOT-1-128816433841748972 信任等级:完整 应用虚拟路径:/ 应用程序路径:C:\ Home \ LocalUser \ ucpga \ Web \ 机器名称:169349-WEB2
流程信息: 进程ID:8892 进程名称:w3wp.exe 帐户名称:NT AUTHORITY \ NETWORK SERVICE
请求信息:
请求网址:https://hr.ucpga.org:443/application.aspx
请求路径:/application.aspx
用户主机地址:74.160.64.222
用户:
经过身份验证:错误
验证类型:
线程帐户名称:169349-WEB2 \ ucpga
ViewStateException信息: 异常消息:无效的视图状态。 客户IP:74.160.64.222 港口:1251 User-Agent:Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 5.1; GTB5; .NET CLR 1.1.4322; InfoPath.1)
答案 0 :(得分:10)
此问题通常是由服务器的<machineKey />
文件中自动生成的machine.config
密钥引起的。每次重新启动应用程序时,它都会生成新密钥。这会使任何现有的加密视图状态或表单身份验证票证无效。
尝试将<machineKey />
validationKey
和decryptionKey
设置为固定值。有关更多信息,请参阅以下链接:
答案 1 :(得分:2)
我强烈怀疑这个问题是否与Viewstate有关。它更多地与会话状态和身份验证cookie有关。
您的应用程序是否在Web场/花园上运行?如果是这样,你应该看看this article。
如果不是,如果您的FormsAuthenticationTicket超时小于会话超时,则通常会发生此错误。发生的情况是Auth票证的到期时间早于用户的会话,并且下一个请求无法进行身份验证。
答案 2 :(得分:1)
这看起来像是身份验证问题。您可能在验证票证上设置了超时,该超时设置即将到期。如果您使用滑动超时,则每次敲击服务器时都会更新故障单。如果你不这样做,你的门票就会过期,你需要处理这个案子。
您可以查看此support文章,了解它是否适用于您。
此外,您可以查看此view state viewer可能有助于您确定视图状态是否无效。
答案 3 :(得分:1)
我也有这个错误......
如果您查看错误,可能是您的加密URL查询字符串。会发生什么是webresource.axd生成的URL字符串具有使用machinekey设置加密的标识。这些过期,如果您有一个页面,然后尝试使用加密的字符串提交,则会触发事件ID 1316或4009。您可能在Application_Error事件中捕获此异常,并检查是否已触发CryptographicException。