2

我们有一个无法重现的问题,它随机发生在我们运行 ASP.NET 4 的 Web 服务器(Windows Server 2008 Datacenter 64 位,托管在 Amazon EC2 上)上。

它以错误日志中的 ASP.NET 警告开头(一个带有很长 URL 的奇怪 GET 请求):

异常信息:
异常类型:HttpException
异常消息:此请求的 URL 长度超过了配置的 maxUrlLength 值。
在 System.Web.HttpRequest.ValidateInputIfRequiredByConfig()
在 System.Web.HttpApplication.PipelineStepManager.ValidateHelper(HttpContext 上下文)

然后出现错误:

应用程序 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 标志)

然后另一个错误:

应用程序 ID:DefaultDomain
进程 ID:4604
异常:System.Threading.ThreadAbortException
消息:线程被中止。
堆栈跟踪:

然后是应用程序错误:

错误应用程序 w3wp.exe,版本 7.0.6002.18005,时间戳 0x49e03238,错误模块 kernel32.dll,版本 6.0.6002.18005,时间戳 0x49e041d1,异常代码 0xe0434352,错误偏移量 0x00000000000176fd,进程 id 0x%x,应用程序启动时间 0%10x%x .

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 Call Site
00000000 15f7edf0 000007fef2826e39 kernel32!RaiseException+0x39
00000000 15f7eec0 000007fef2bbbfb4 clr!RaiseTheExceptionInternalOnly+0x363
00000000 15f7eff0 000007fef2bbc906 clr!RaiseTheException+0xa4
00000000 15f7f020 000007fef2c3b99b clr!BStrFromString+0x66
00000000 15f7f050 000007fef2c3b9a9 clr!RealCOMPlusThrow+0x3b
00000000 15f7f0c0 000007fef2c93156 clr!RealCOMPlusThrow+0x9
00000000 15f7f0f0 000007fef2b229f3 clr!Thread::RaiseCrossContextException+0x2a7
00000000 15f7f310 000007fef2830886 clr! ?? ::FNODOBFM:: 15f7f4c0 000007fe 15f7f530 000007fe 15f7f5c0 000007fe 15f7f5f0 000007fe 15f7f620 000007fe 15f7f6d0 000007festring'+0xafb03
00000000
f27fcce3 clr!UM2MDoADCallBack+0x9e
00000000
f845ba59 clr!UMThunkStubAMD64+0x273
00000000
f8458f02 webengine4!W3_MGD_HANDLER::ProcessNotification+0x79
00000000
f27d4595 webengine4!ProcessNotificationCallback+0x43
00000000
f27d3ac8 clr!UnManagedPerAppDomainTPCount::DispatchWorkItem+0x181
00000000
f294658f clr!ThreadpoolMgr::NewWorkerThreadStart+0x2e5
00000000
15f7f770 000007fe 15f7f810 00000000 15f7fbd0 00000000 15f7fc00 00000000`00000000 ntdll!RtlUserThreadStart+0x1d f29447c6 clr!ThreadpoolMgr::WorkerThreadStart+0x3b
00000000
76c1be3d clr!Thread::intermediateThreadProc+0x7d
00000000
76d56a51 kernel32!BaseThreadInitThunk+0xd
00000000

有人知道这可能是什么吗?或者可以指出我用Windbg分析它的正确方向吗?

Edit: The incoming urls usually looks like this: foo.bar.com/wEPDwULLTE1MTk5MzIzMTFkGAMFFmN0bDAwJGRiMSRkZGxEYXRhYmFzZXMPFCsAAmRkZAU7Y3RsMDAkU2VhcmNoQ2xvdWQxJF9SaWdodENvbHVtbiRfU2VhcmNoQ2xvdWQkbHN2U2VhcmNoVGVybXMPFCsADmRkZGRkZGQ8KwAUAAIUZGRkZgL/D2QFK2N0bDAwJHN1cnZleTEkX1JpZ2h0Q29sdW1uJF9JUiR1c2VyQ29tbWVudHMPFCsAA2VnZGQeuUcvQDsShDIp1k7YjJw70Ry 9/Q1B9Sd1egrovYgkw==/

但我在事件日志中发现,这样的 url 也会发生这种情况: foo.bar.com/& ("dan​​gerous request" in .NET 4)

4

2 回答 2

0

您至少应该加载符号,然后在调用堆栈中看到正确的字符串。

如果您无法处理此类分析,我认为通过http://support.microsoft.com打开支持案例对您有好处。

于 2011-01-23T01:48:38.707 回答
0

我一直在尝试解决类似的问题。

我发现这篇文章声称确定原因的过程,我认为这实际上是有道理的:

http://blogs.msdn.com/b/asiatech/archive/2012/06/21/how-to-troubleshoot-httpexception-request-timed-out-asp-net-4-0-64-bit.aspx

警告:我无法成功完成所描述的步骤。我会在这里发帖寻求帮助。

于 2013-02-02T21:00:50.910 回答