2011-05-25 35 views
6

我有一个应用程序获取随机会话超时。 (IIS 7.5在Windows 2008 R2,.NET 4.0)在ASP.NET MVC3中的随机会话超时

我尝试了以下内容:

  • 检查应用程序日志,如果W3wp.exe进程中坠毁,但没有进入。
  • 在应用程序池中禁用了快速失败保护
  • 移到了sql server状态提供程序,以确保loa​​dbalancers sticky session不是 的问题。 (我们使用kemp loadmaster)。
  • 确保没有其他应用程序使用相同的应用程序池。
  • 检查被调用程序集线程中的异常处理正确。 (使用throw new exception来模拟)并且错误处理是正确的。
  • 确保validationKey和decryptionKey在所有4个Web服务器上的webconfig中设置为相同的密钥。

我现在跑出想法如何发现这个邪恶的错误。有什么建议么?我无法在调试器中在本地机器上重现问题。

可能很重要的一点,从会话丢失经常发生的页面1到页面2的转移有时会超过120秒,这是因为通过tcp套接字连接的第三方系统。

+0

所以开始的时候你”在本地重新调试,是不是可以模拟这个第三方系统的超时或长时间的调用? – 2011-05-25 11:37:28

+0

我做了使用thread.sleep,但问题没有发生。 – NickD 2011-05-25 11:42:54

+0

我刚才提到它,因为也许有人知道一些秘密iis设置我忘了。如果发生这样的超时,我希望在事件日志的应用程序部分输入内容。 – NickD 2011-05-25 11:45:48

回答

7

HI史努比你链接到我的问题,因为他们是相似的,

正如我appool被撞毁我试过这个解决方案。如果您appool崩溃的,这可能有助于 http://support.microsoft.com/kb/911816

解决方案停止修复黑客一直在我的应用程序池了,但并没有解决问题,

<configuration> 
<runtime> 
    <legacyUnhandledExceptionPolicy enabled="true" /> 
</runtime> 

如果您的应用程序池仍然是完整的,你可以尝试ELMAH,因为这对我帮助很大 http://code.google.com/p/elmah/

您可以使用此代码来获取ELMAH来处理非托管异常 http://code.google.com/p/elmah/issues/detail?id=199

我很好奇,如果它是MVC 3.0问题.NET 4.0 ,因为我有使用MVC 2.0没有问题,运行几个非常类似的应用程序, 只有当我移动到MVC 3.0

+0

谢谢,我试了一下。我不使用ELMAH,我使用http://www.gurock.com/smartinspect/ – NickD 2011-05-27 13:42:00

2

它发生在单个服务器上吗?这听起来像是网络农场的问题。

你可以改变你的应用程序,所以你不使用第三方应用程序进行测试?

你必须消除碎片直到故障消失,然后再添加东西。恢复第三方应用程序,把其他的服务器回等

+0

问题出在一个单一的服务器上,你永远无法再现它,系统只会显示来自第三方系统的数据;我通过tcp发送一个xml请求,并通过tcp得到一个xml答案,这通常需要45秒,有时最多3分钟,我的问题有点更一般,接下来会做什么?我应该检查哪些设置,日志。 – NickD 2011-05-25 11:40:22

+0

那么我会从第三杆开始ty应用程序。也许'假'起来的XML响应,所以你的网页的其余部分是快乐的,但实际上并没有调用该应用程序。如果会话仍然丢失,那不是问题。 – n8wrl 2011-05-25 14:30:32