【发布时间】:2011-12-01 07:47:23
【问题描述】:
我最近推出了一个新的 ASP .Net 应用程序。此应用程序使用 .Net 4.0 和 Entity Framework 4。它是一个“基本”CRUD 应用程序。我几乎只使用 EntityDataSource 进行数据访问。
用户报告了应用程序“偶尔冻结”(他们都使用 IE 8)。如果用户关闭他的浏览器并重新启动,则该应用程序很好。它可能每天总共发生一次或两次,通常发生在重度用户身上。 (所以,我一直倾向于内存泄漏或其他类型的资源限制。)
直到不久前,我还从未见过这种情况发生。它不会在客户端 PC 或服务器的事件日志中留下任何内容。此外,IIS 错误日志或 SQL 日志中也没有任何内容。
不久前,我终于做到了。我将所有 EntityDataSources 切换为每页使用一个对象上下文。我下载了 EF Profiler(这似乎是一个很棒的产品),它指出我在我的许多页面上都使用了多个对象上下文,因为其中许多页面都有多个 EntityDataSource。所以,我正在清理所有这些并测试每个页面,当你瞧……IE 停止加载页面!
起初,页面开始加载缓慢(这是一个我已经修改为使用单个对象上下文的页面,所以尽管我仍然认为我需要在所有页面中实现这种“单例”模式,但我想这不是罪魁祸首!无论如何..),然后在某个时候我收到了:
消息:Sys.WebForms.PageRequestManagerTimeoutException:服务器请求超时。
不过,事件日志中没有任何内容。我还检查了 IIS 网络日志,但没有看到任何内容,但肉眼很难阅读,我可能需要下载解析器以确保其中没有任何内容。
无论如何,我决定启动另一个窗口并导航到我的应用程序,果然该窗口工作正常,没有问题。我回到停止响应的窗口,刷新它,等待......转到我的应用程序的主页(基本上只是一些静态 html.. 什么都没有..)。接下来,我在当前冻结的窗口中打开了一个新选项卡,该选项卡工作正常。所以,我回到不能再从我的应用程序加载页面的窗口并尝试其他一些网站...... espn.com 加载正常,msn.com 加载正常,然后我输入我的应用程序主页的 URL(并在我的应用程序中尝试了其他一些页面),什么都没有。 IIS 甚至不会在其日志文件中记录尝试(就像 IE 刚刚决定不再为我的本地主机做“获取”!)。最后,在等待了一段时间后(当我正在输入这篇文章时)我现在在那个窗口中看到了这个错误消息:
Internet Explorer 无法显示该网页。您可以尝试什么:问题可能是由多种问题引起的,包括:BLAH BLAH BLAH...
所以,我跳回那个窗口,它仍然可以正常浏览互联网站点。但是,当我再次尝试访问我的应用程序中的任何页面时,我什么都没有(在选项卡中旋转蓝色圆圈)。因此,我再次在同一个浏览器中启动了一个新选项卡,并且可以很好地浏览我的应用程序。
我的应用对这个浏览器实例做了什么,不再让它加载它的任何页面(事实上,它似乎甚至没有在任何应用页面上执行 GET,因为没有什么新东西在 IIS 日志中...除了我在这些其他选项卡和/或浏览器窗口中加载页面时工作正常,因此日志记录仍在工作...)?我将永远感激能帮助我解决这个问题的人。我不确定它会不会有什么好处,但我会留下这个浏览器窗口,以便有人可以告诉我一些事情来尝试诊断这个问题。感觉我已经快要弄清楚了。我终于有一个行为不端的窗口。我害怕关闭窗口或在应用程序上进行新的构建,直到我得到一些关于尝试的好的输入......
我应该补充一点,当这种情况发生在我身上时,我正在本地 PC 上运行,所以我是唯一的用户,并且只有一个打开应用程序的窗口..
虽然,我完全被难住了!
【问题讨论】:
标签: c# .net asp.net entity-framework-4 iis-7.5