【发布时间】:2011-05-24 09:25:17
【问题描述】:
我们有一个 ASP.NET 网站,有时页面被锁定,没有内容,全白屏,最终在 IE 中超时,返回 IE 错误页面标题“Internet Explorer 无法显示网页”。注意拼写。我们将其称为“无的白屏”。
来自 IIS 的日志,没有显示错误(没有 400+ 状态代码),实际上,显示 IE 进入“无的白屏”的页面,作为 IIS 日志中的状态代码 200。此外,内部服务器端 ASP.NET 跟踪显示所有代码按预期运行。
尝试重现此错误很困难。它不会始终如一地发生。充其量,如果我们打开页面,关闭它们,并尽可能快地重复此操作,最终会在尝试打开页面和/或刷新框架时发生。它并不总是两次相同的页面。
某些页面使用 AJAX 控件。大多数使用 GridView。少数使用 Responce.Redirect。没有什么一致的。
搜索“白屏”或“Internet Explorer 无法显示网页”的原因到处都是,似乎没有关系。
在 Visual Studio 2008 调试会话中,我们设法捕获了一个“白屏”实例,其中一个奇怪的未知线程被下面的调用堆栈锁定。请注意,我不确定此调用堆栈是否相关,或者是否真的被锁定。
[托管到本地转换]
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(object state) + 0x2f bytes mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback 回调, 对象状态) + 0x6f 字节 mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(System.Threading._ThreadPoolWaitCallback tpWaitCallBack) + 0x53 字节 mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(object state) + 0x59 bytes
该堆栈中的所有函数都与我们编写的代码无关。我们搜索了“Internet Explorer 无法显示网页”以及该跟踪中调用的函数的各个方面,但似乎没有任何关联。
有什么想法吗?
【问题讨论】:
-
我也有类似的问题,目前我认为它与会话状态有关。您是否使用状态服务器进行会话状态管理?它是负载平衡(多个 Web 服务器)配置吗?
标签: asp.net internet-explorer iis