ASP.NET应用程序异常导致IIS进程崩溃

时间:2015-01-09 15:29:03

标签: asp.net crash iis-7.5

我有一个行为不端的第三方ASP.NET应用程序导致IIS崩溃。我无法理解抛出简单的,未处理的主键异常的应用程序是否足以成为杀死Web服务器进程的理由。

我错误地认为将网站放在其自己的应用程序池中会以某种方式将Web服务器上的其他网站与错误行为隔离开来。我知道也许一个具有失控资源消耗的应用程序可能会破坏整个过程,但我不明白如何允许一个供应商的未处理应用程序异常对Web服务器上的每个其他站点产生负面影响

我做了一些网络搜索,发现如果某个网站反复出现问题(默认设置在5分钟内完成5次),可能会发生这种情况,但这不是这里发生的事情。这里发生的是每次发生此异常时(大约每3或4天一次),整个IIS进程中止并导致此Web服务器上所有站点暂时中断。

我可能有一些模糊不清的设置错误配置。在大多数情况下,我的IIS站点和应用程序池都配置了默认设置,这些服务器在9月份开始发生此问题之前已经启动并运行了多年。

任何想法都会非常感激。

系统资料: Windows 2008 R2 IIS 7.5 截至上周末已修补


以下是每次发生此问题时发生的3个事件条目的一部分:

应用程序记录未处理的异常:

An unhandled exception occurred and the process was terminated.

Application ID: /LM/W3SVC/2/ROOT

Process ID: 4680

Exception: System.Data.SqlClient.SqlException

Message: Violation of PRIMARY KEY constraint 'PK_st_GlobalSettings'. Cannot insert duplicate key in object 'dbo.st_GlobalSettings'. The duplicate key value is (Options, thread_indexerrunning).
The statement has been terminated.

StackTrace:    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at Microsoft.ApplicationBlocks.Data.SqlHelperInternal.ExecuteReader(SqlConnection , SqlTransaction , CommandType , String , SqlParameter[] , #XZc )
(rest of stack trace hidden to protect the identity of the application vendor)

IIS记录存在未处理的异常:

Application: w3wp.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Data.SqlClient.SqlException
Stack:
at Microsoft.ApplicationBlocks.Data.SqlHelperInternal.ExecuteReader(System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlTransaction, System.Data.CommandType, System.String, System.Data.SqlClient.SqlParameter[], #XZc)
(rest of stack trace hidden to protect the identity of the application vendor)

然后IIS崩溃:

Faulting application name: w3wp.exe, version: 7.5.7601.17514, time stamp: 0x4ce7afa2
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18409, time stamp: 0x5315a05a
Exception code: 0xe0434352
Fault offset: 0x000000000000940d
Faulting process id: 0x1248
Faulting application start time: 0x01d02b4003b1de26
Faulting application path: c:\windows\system32\inetsrv\w3wp.exe
Faulting module path: C:\Windows\system32\KERNELBASE.dll
Report Id: 0f2bc4ae-97b4-11e4-ad94-001c23b85f7b

3 个答案:

答案 0 :(得分:2)

我有很多我管理的服务器2012(IIS 8),并且所有这些服务器都在本月安装Microsoft更新的48小时内开始出现此问题。我检查了我的应用程序日志超过两年,这个错误在本月之前从未存在过,环境中唯一的delta是1月份的补丁!

答案 1 :(得分:2)

似乎在请求上下文之外发生的未处理异常的预期行为是终止工作进程。因此,如果您的第三方应用程序正在执行某些异步工作,并抛出未处理的异常,则这将符合条件。见https://support.microsoft.com/en-us/kb/911816 更多

答案 2 :(得分:-1)

这不是IIS错误。这似乎是一个糟糕的要求或其他东西。

线索在:“StackTrace:at System.Data.SqlClient.SqlConnection.OnError”