我有一个ASP.NET应用程序的问题,这让我疯了.
当用户使页面处于非活动状态一段时间时,会话超时并且由于会话变量无法解析而引发错误(我将错误地捕获此信息,但这不是问题).我编写了一个'defribulator',它将在会话超时的一半到期后执行不可见的回发,这似乎工作正常 - 即使会话超时设置为20分钟,应用程序停留30分钟也不会导致错误.然而,今天早上其他开发者之一经历了超时 - 这怎么可能?
在进一步调查时,我认为当超出表单身份验证超时时会出现问题 - 即使defribulator已经(显然)保持会话处于活动状态.我已经读过,如果在指定的超时时间的一半之后发生回发,则只会重新发出身份验证票据,这不是问题,因为defrib将在超时期间的后半段发出请求 - 所以为什么是它没有重新发行?
我想我可以通过将身份验证超时设置为8小时左右来解决问题,但这是一个糟糕的修复.
任何人都可以对此有所了解吗?
提前致谢
[编辑24/11/2008]审查日志文件已经证明具有启发性和令人困惑.我可以看到defribulator在10分钟不活动后触发,但是当Session_Id似乎始终是合理的时,表单身份验证票证ID会发生变化 - 不确定是否应该.我现在正在制定测试计划,并在完成测试计划后回复.感谢迄今为止提供反馈的所有人.
[编辑24/11/2008]好吧我很难过 - 现在看来工作正常!当defrib运行(ID更改)并且正在维护会话时,将重新生成身份验证票证.这是服务器问题 - 无法分辨.我以前经历过这个问题,从来没有深究过这个问题而且非常令人沮丧 - 当然不应该这么困难.我将不得不放弃这个时间,因为我必须继续应用程序的其他方面.我只需围绕这个问题编写代码 - 这可能永远不会发生在客户网站上.
再次感谢每个人的意见 - 如果我取得任何进展,我会将其发回这里.
当iis回收或终止应用程序池时,也可能发生这种情况.
您可能需要检查表单身份验证疑难解答可能是客户端丢失了Cookie.
如果手动生成身份验证票证,则需要在代码中设置超时,而不是web.config