【发布时间】:2013-02-20 01:29:05
【问题描述】:
我们的服务器运行的是 Windows Server 2003。我们已在 IIS 中更新了我们网站的 .Net 版本以使用 4.0。随机时间,每周 1-2 次,自更改后,触发快速失败,网站因 503 错误而被关闭。
应用程序日志显示一系列引发快速失败触发器的错误。每组有两个错误,最多 10 个快速失败触发器。错误是:
凌晨 1:27:21
.NET 运行时 4.0 错误
EventType clr20r3,P1 w3wp.exe,P2 6.0.3790.3959,P3 45d6968e,P4 app_code.xqrjkjyl,P5 0.0.0.0,P6 51345a6b,P7 252,P8 0,P9 system.stackoverflowexception,P10 NIL。上午 1:27:11
.NET 运行时
应用程序:w3wp.exe
框架版本:v4.0.30319
说明:进程因堆栈溢出而终止。
请注意,4.0 错误出现在未命名的 .Net 错误之后 10 秒。我相信未指定的 .net 版本错误是针对我们从旧的 2.0 框架迁移而来的。
在 IIS6 中,处理程序设置为使用 4.0。我们在主站点下也有几个应用程序池。所有这些的 web.config 文件都指定 4.0 作为要使用的框架:
<compilation debug="false" targetFramework="4.0">
<assemblies>
<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<!--<add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>-->
</assemblies>
【问题讨论】:
-
为什么提到
System.Security和System.Design的2.0版本? -
您是否知道导致堆栈溢出的原因 - 您是否能够隔离导致问题的代码并进行重构?我想也许某些资源限制已从 2 更改为 4,并且无论发生什么都达到了较小的 4.0 限制。这纯粹是猜想,但可能值得查看导致问题的代码并从那里向后工作?
-
感谢您的回复。我不确定为什么要使用 system.design 和 system.security 的 2.0 版本。关于 4.0 的下限,我能想到的唯一想法是文件上传功能的最大请求长度等项目,但那是在元数据库中,我认为与此无关。还有其他地方配置.net的详细信息吗?
-
您确实需要弄清楚异常是在代码中的哪个位置引起的。尝试将事件日志与 IIS 日志相关联。
-
您还应该检查应用程序池的运行时间。它独立于 web.config 中指定的框架版本。