【问题标题】:Random Session Timeout in ASP.NET MVC3ASP.NET MVC3 中的随机会话超时
【发布时间】:2011-09-01 16:43:56
【问题描述】:

我有一个随机会话超时的应用程序。 (Windows 2008 R2 上的 IIS 7.5,.NET 4.0)

我尝试了以下方法:

  • 检查应用程序日志是否 w3wp.exe 进程崩溃,但没有条目。
  • 在应用程序池中禁用快速故障保护
  • 移至 sql server 状态提供程序以确保负载平衡器的粘性会话不是 问题。 (我们使用 kemp loadmaster)。
  • 确保没有其他应用程序使用相同的应用程序池。
  • 检查了调用程序集的线程中的异常是否得到正确处理。 (使用 throw new exception 模拟)并且错误处理是正确的。
  • 确保在所有 4 个网络服务器的 webconfig 中将validationKey 和decryptionKey 设置为相同的密钥。

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

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

【问题讨论】:

  • 那么当你在本地调试时,是不是不能从这个第 3 方系统模拟超时或长时间运行的调用?
  • 我使用 thread.sleep 做到了,但问题没有发生。
  • 我刚刚提到它是因为也许有人知道我忘记的一些秘密 iis 设置。此外,如果发生这种超时,我希望在事件日志的应用程序部分有一个条目。
  • 我希望有人在方向上有想法:iis 设置,疯狂的内存转储分析可能使用特定的脚本 usign windebug 或 iis 的一些特殊日志 modis 什么的。我没有更多的想法;-(
  • 更新:我永远无法重现这个问题,我只是收到了外界的抱怨,并且经常在日志中看到它。将代码移出并没有帮助,因为我无法复制它,没有它,它作为一个 b2c 网站毫无意义。

标签: asp.net-mvc asp.net-mvc-3 iis-7


【解决方案1】:

你好史努比,你链接到我的问题,因为它们很相似,

当我的 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

我很好奇 .net 4.0 是否是 MVC 3.0 问题 因为我有几个非常相似的应用程序使用 MVC 2.0 运行没有问题, 仅在我迁移到 MVC 3.0 时才开始

【讨论】:

【解决方案2】:

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

您能否更改您的应用,以便不使用第 3 方应用进行测试?

你必须消除碎片直到故障消失,然后再添加东西。恢复 3rd 方应用,重新开启其他服务器等。

【讨论】:

  • 问题出在一台服务器上,您永远无法重现它。该系统只显示来自第 3 方系统的数据;我通过 tcp 发送一个 xml 请求,并通过 tcp 获得一个 xml 答案。这通常需要 45 秒,有时长达 3 分钟。我的问题有点笼统,接下来你会做什么?我应该检查哪些设置和日志。
  • 好吧,我将从第 3 方应用开始。也许“伪造”一个 XML 响应,所以你的页面的其余部分很高兴,但实际上并没有调用应用程序。如果会话仍然丢失,那不是问题。
猜你喜欢
  • 2015-02-16
  • 2012-09-24
  • 1970-01-01
  • 1970-01-01
  • 2012-08-16
  • 2012-04-08
  • 2010-12-05
  • 2010-10-13
相关资源
最近更新 更多