0

我有 ASP.NET 应用程序。它会定期下降,让我的用户不满意。

在日志中我看到:

错误应用程序名称:w3wp.exe,版本:7.5.7601.17514,时间戳:0x4ce7afa2
错误模块名称:nlssorting.dll,版本:4.0.30319.261,时间戳:0x4ec9f3aa
异常代码:0xc00000fd
故障偏移:0x0000000000002296
错误进程ID:0xfe4
错误应用程序启动时间:0x01cd23bb335b5514
错误的应用程序路径:c:\windows\system32\inetsrv\w3wp.exe
错误模块路径:C:\Windows\Microsoft.NET\Framework64\v4.0.30319\nlssorting.dll
报告 ID:f25aaeba-8fae-11e1-aeea-0030488d6555

在故障转储中,我看到:

00000000`18187760 00000000`ffffffff app_code!FunBeatRace.Configuration.SiteConfiguration.get_CurrentBrand+0x5a
00000000`181877a0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.CreateResourceKeyFromCultureName+0x16
00000000`181877f0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.GetResourceCache+0x78
00000000`181878c0 00000000`ffffffff app_code!FunBeatRace.Globalization.CustomResourceProvider.System.Web.Compilation.IResourceProvider.GetObject+0x9b
00000000`18187900 00000000`ffffffff system_web_ni!System.Web.Compilation.ResourceExpressionBuilder.GetResourceObject+0x1f
00000000`18187940 00000000`ffffffff system_web_ni!System.Web.HttpContext.GetGlobalResourceObject+0x27

这是正常的应用程序工作。但在那之后发生

000000001819D600 000007FF001E116B App_Code!FunBeatRace.Configuration.SiteConfiguration.get_CurrentBrand()+0x1cb
000000001819D640 000007FF001E2F06 App_Code!FunBeatRace.Globalization.CustomResourceProvider.CreateResourceKeyFromCultureName(System.String)+0x16
000000001819D690 000007FF001E29E8 App_Code!FunBeatRace.Globalization.CustomResourceProvider.GetResourceCache(System.String)+0x78

MANAGED_STACK_COMMAND:_EFN_StackTrace

LAST_CONTROL_TRANSFER:从 000007fef99c3742 到 000007fef80b2296

ADDITIONAL_DEBUG_TEXT:基于属性 [Is_ChosenCrashFollowupThread] 的后续集来自 Frame:[0] on thread:[PSEUDO_THREAD]

FAULTING_THREAD:ffffffffffffffff

BUGCHECK_STR:APPLICATION_FAULT_STACK_OVERFLOW_WRONG_SYMBOLS_CALL

PRIMARY_PROBLEM_CLASS:STACK_OVERFLOW_CALL

DEFAULT_BUCKET_ID:STACK_OVERFLOW_CALL

堆栈文本:  
00000000`18187530 00000000`ffffffff mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke+0xbe
00000000`18187620 00000000`ffffffff mscorlib_ni!System.Globalization.CompareInfo.GetHashCodeOfString+0xa9
00000000`18187670 00000000`ffffffff mscorlib_ni!System.Collections.Hashtable.get_Item+0x5c
00000000`18187720 00000000`ffffffff system_web_ni!System.Web.SessionState.SessionStateItemCollection.get_Item+0x32

结果我们有:

SYMBOL_NAME:mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke

FOLLOWUP_NAME:机器所有者

模块名称:mscorlib_ni

IMAGE_NAME:mscorlib.ni.dll

DEBUG_FLR_IMAGE_TIMESTAMP:4ec9f74e

STACK_COMMAND:_EFN_StackTrace;** 伪上下文 ** ; KB

FAILURE_BUCKET_ID:STACK_OVERFLOW_CALL_c00000fd_mscorlib.ni.dll!DomainNeutralILStubClass.IL_STUB_PInvoke

BUCKET_ID:X64_APPLICATION_FAULT_STACK_OVERFLOW_WRONG_SYMBOLS_CALL_mscorlib_ni!DomainNeutralILStubClass.IL_STUB_PInvoke

WATSON_STAGEONE_URL:http://watson.microsoft.com/StageOne/w3wp_exe/7_5_7601_17514/4ce7afa2/nlssorting_dll/4_0_30319_261/4ec9f3aa/c00000fd/00002296.htm?Retriage=1

跟进:MachineOwner

但我不知道有什么麻烦。

请告诉我如何解决这个问题。

4

2 回答 2

0

这看起来很相似:http ://connect.microsoft.com/VisualStudio/feedback/details/665157/nlssorting-fault-crashes-iis

您还可以在使用如下代码尝试捕获 Global.asax.cs 的 Application_Error() 方法中的错误时发现价值:

protected void Application_Error(Object sender, EventArgs e) {
    Exception ex = HttpContext.Current.Server.GetLastError();
    // handle it
    HttpContext.Current.Context.ClearError();
}

随着时间的推移,您也可能会加入一个解决方案,例如如何让 ELMAH 与 ASP.NET MVC [HandleError] 属性一起使用?

于 2012-04-28T08:21:54.393 回答
0

根据微软的文档,w3wp.exe有时会在遇到未处理的异常时崩溃。

根据我的经验w3wp.exe,当堆栈由于溢出而无可救药地损坏时会崩溃,并且由于内存损坏,try-catch 块无法处理这种错误。

主要原因可能是递归调用过多,因为每次调用在退出之前都会使用一定数量的堆栈。可能有无限递归吗?

第二个原因是 w3wp.exe 或 .NET Framework 中的内存管理不善,导致发生内存损坏,而不是检测这种情况并通知用户有关 Stack Overflow 的信息。

于 2016-05-03T13:57:09.223 回答