我们遇到了一个无法重现的问题,它是在运行ASP.NET 4的我们的Web服务器(Windows Server 2008 Datacenter 64位,托管在Amazon EC2上)上随机发生的。
它以错误日志中的ASP.NET警告开头(一个奇怪的GET请求,网址很长):
例外信息:
异常类型:HttpException
异常消息:此请求的URL长度超过配置的maxUrlLength值 在System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
在System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext context)
然后出现错误:
申请ID:/ LM / W3SVC / 2 / ROOT
进程ID:4604
例外:System.Threading.ThreadAbortException
消息:线程正在中止 StackTrace:在System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext context)上 在System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext,IntPtr nativeRequestContext,IntPtr moduleData,Int32 flags)
在System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext,IntPtr nativeRequestContext,IntPtr moduleData,Int32 flags)
然后是另一个错误:
应用程序ID:DefaultDomain
进程ID:4604
例外:System.Threading.ThreadAbortException
消息:线程正在中止 StackTrace:
然后是应用程序错误:
错误应用程序w3wp.exe,版本7.0.6002.18005,时间戳0x49e03238,错误模块kernel32.dll,版本6.0.6002.18005,时间戳0x49e041d1,异常代码0xe0434352,错误偏移0x00000000000176fd,进程ID 0x%9,应用程序启动时间为0x%10。
WinDBG的
我设法通过adplus获得转储崩溃,但我真的不知道该寻找什么。我之前使用Windbg对一些stackoverflow进行了故障排除,但我不知道使用哪种方法来解决此错误。
!pe在线程上出现错误:
异常对象:00000001c323d948
异常类型:System.Threading.ThreadAbortException
消息:线程正在中止 InnerException:
StackTrace(生成):
StackTraceString:
HResult:80131530
!clrstack
儿童SP IP呼叫站点
0000000015f7f078 0000000076c176fd [GCFrame:0000000015f7f078]
0000000015f7f258 0000000076c176fd [GCFrame:0000000015f7f258]
ķ
Child-SP RetAddr呼叫站点
0000000015f7edf0 000007fe
f2826e39 kernel32!RaiseException + 0x39
0000000015f7eec0 000007fe
f2bbbfb4 clr!RaiseTheExceptionInternalOnly + 0x363
0000000015f7eff0 000007fe
f2bbc906 clr!RaiseTheException + 0xa4
0000000015f7f020 000007fe
f2c3b99b clr!BStrFromString + 0x66
0000000015f7f050 000007fe
f2c3b9a9 clr!RealCOMPlusThrow + 0x3b
0000000015f7f0c0 000007fe
f2c93156 clr!RealCOMPlusThrow + 0x9
0000000015f7f0f0 000007fe
f2b229f3 clr!Thread :: RaiseCrossContextException + 0x2a7
0000000015f7f310 000007fe
f2830886 clr! ?? :: FNODOBFM ::string'+0xafb03
15f7f4c0 000007fe
00000000f27fcce3 clr!UM2MDoADCallBack+0x9e
15f7f530 000007fe
00000000f845ba59 clr!UMThunkStubAMD64+0x273
15f7f5c0 000007fe
00000000f8458f02 webengine4!W3_MGD_HANDLER::ProcessNotification+0x79
15f7f5f0 000007fe
00000000f27d4595 webengine4!ProcessNotificationCallback+0x43
15f7f620 000007fe
00000000f27d3ac8 clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+0x181
15f7f6d0 000007fe {{1 15f7f770 000007fe
00000000f294658f clr!ThreadpoolMgr::NewWorkerThreadStart+0x2e5
15f7f810 00000000
00000000f29447c6 clr!ThreadpoolMgr::WorkerThreadStart+0x3b
15f7fbd0 00000000
0000000076c1be3d clr!Thread::intermediateThreadProc+0x7d
15f7fc00 00000000`00000000 ntdll!RtlUserThreadStart + 0x1d
00000000
任何人都知道这可能是什么?或者可以指出我使用Windbg进行分析的正确方向?
编辑: 传入的网址通常如下所示: foo.bar.com/wEPDwULLTE1MTk5MzIzMTFkGAMFFmN0bDAwJGRiMSRkZGxEYXRhYmFzZXMPFCsAAmRkZAU7Y3RsMDAkU2VhcmNoQ2xvdWQxJF9SaWdodENvbHVtbiRfU2VhcmNoQ2xvdWQkbHN2U2VhcmNoVGVybXMPFCsADmRkZGRkZGQ8KwAUAAIUZGRkZgL/D2QFK2N0bDAwJHN1cnZleTEkX1JpZ2h0Q29sdW1uJF9JUiR1c2VyQ29tbWVudHMPFCsAA2VnZGQeuUcvQDsShDIp1k7YjJw70Ry 9 / Q1B9Sd1egrovYgkw == /
但是我在事件日志中发现这样的网址会发生这种情况: foo.bar.com/& (.NET 4中的“危险请求”)
答案 0 :(得分:0)
您至少应该加载符号,然后查看调用堆栈中显示的正确字符串。
如果您无法处理此类分析,我认为通过http://support.microsoft.com打开支持案例对您有好处。
答案 1 :(得分:0)
我一直试图找出类似的问题。
我发现这篇文章声称确定原因的过程,我认为这实际上是有道理的:
警告:我无法成功完成所描述的步骤。我将在这里寻求帮助。