我们有一个ASP.NET网站,有时会锁定页面,没有内容,全白屏幕,最终在IE中超时返回IE错误页面标题“Internet Explorer无法显示网页”。注意拼写。我们称之为“白色无屏幕”。
来自IIS的日志,显示没有错误(没有400+状态代码),实际上,显示IE进入“无白屏”的页面,作为IIS日志中的状态代码200。此外,内部服务器端ASP.NET跟踪,显示所有代码按预期运行。
尝试重现此错误很困难。它不会持续发生。充其量,如果我们打开页面,关闭它们,并尽可能快地重复它,它最终会在尝试打开页面和/或帧的refesh时发生。它并不总是两次相同的页面。
有些页面使用AJAX控件。大多数人使用GridViews。一些使用Responce.Redirect。没有什么是一致的。
搜索“无白屏幕”或“Internet Explorer无法显示网页”的原因到处都是,并且似乎没有相关性。
在Visual Studio 2008调试会话中,我们设法捕获了“White Screen of Nothing”的一个实例,其中一个奇怪的未知线程被下面的调用堆栈锁定。注意,我不确定这个调用堆栈是否相关,或者它是否真的被锁定了。
[管理到原生过渡]
System.dll!System.Net.SafeCloseSocket.InnerSafeCloseSocket.Accept(System.Net.SafeCloseSocket socketHandle,byte [] socketAddress,ref int socketAddressSize)+ 0x13 bytes System.dll!System.Net.Sockets.Socket.Accept()+ 0x73字节 WebDev.WebHost.dll!Microsoft.VisualStudio.WebHost.Server.OnStart(未使用的对象)+ 0x35字节 mscorlib.dll!System.Threading._ThreadPoolWaitCallback.WaitCallback_Context(对象状态)+ 0x2f字节 mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext,System.Threading.ContextCallback callback,object state)+ 0x6f bytes mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(System.Threading._ThreadPoolWaitCallback tpWaitCallBack)+ 0x53 bytes mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(对象状态)+ 0x59字节
该堆栈中的所有函数都与我们编写的代码无关。我们对“Internet Explorer无法显示网页”以及该跟踪中调用的函数的各个方面进行了搜索,似乎没有任何关联。
有什么想法吗?
答案 0 :(得分:2)
上次我处理这样的问题时,问题是响应耗时太长,和/或IIS回收了工作进程。由于这就像资源问题(尝试做一些需要太多时间,CPU或内存的事情),修复的细节会有所不同。
PerformWaitCallback,如果它正在等待一些非常慢的东西,它就是异步应用程序暂停的可能位置。
答案 1 :(得分:0)
我记得有两件事。 验证IIS的回收过程,它可能会在您的过程完成之前回收应用程序池。验证服务器的事件查看器,查看任何ASP.NET错误,我们可以为您提供更多信息,帮助您从中获取信息。