【问题标题】:503 - Server Unavailable - .Net 2.0 and 4.0 Conflict503 - 服务器不可用 - .Net 2.0 和 4.0 冲突
【发布时间】: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.SecuritySystem.Design的2.0版本?
  • 您是否知道导致堆栈溢出的原因 - 您是否能够隔离导致问题的代码并进行重构?我想也许某些资源限制已从 2 更改为 4,并且无论发生什么都达到了较小的 4.0 限制。这纯粹是猜想,但可能值得查看导致问题的代码并从那里向后工作?
  • 感谢您的回复。我不确定为什么要使用 system.design 和 system.security 的 2.0 版本。关于 4.0 的下限,我能想到的唯一想法是文件上传功能的最大请求长度等项目,但那是在元数据库中,我认为与此无关。还有其他地方配置.net的详细信息吗?
  • 您确实需要弄清楚异常是在代码中的哪个位置引起的。尝试将事件日志与 IIS 日志相关联。
  • 您还应该检查应用程序池的运行时间。它独立于 web.config 中指定的框架版本。

标签: asp.net .net iis iis-6


【解决方案1】:

您可以尝试在出现此问题时使用 iisstate(http://www.iisfaq.com/?View=P197) 或 iis debug diag (http://blogs.msdn.com/b/tess/archive/2008/05/21/debugdiag-1-1-or-windbg-which-one-should-i-use-and-how-do-i-gather-memory-dumps.aspx) 从 IIS 内存中获取转储。

使用转储,您可以分析它 (Windbg) 并了解它引发此异常的位置。

也看看这个Getting IIS Worker Process Crash dumps

干杯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 2016-08-13
    • 2021-12-02
    • 2017-01-14
    • 1970-01-01
    • 2017-08-23
    • 2012-08-15
    相关资源
    最近更新 更多