【发布时间】:2016-06-14 15:34:19
【问题描述】:
有没有好心人有时间帮我弄清楚为什么我的应用程序会间歇性挂起(并希望如何解决它)?我正在从 VS2015 运行一个访问 SQL Server 数据库的 Web 程序。有时我会单击网页上的链接,一切正常。然而,其他时候,小圆圈永远旋转,永远不会回来。它似乎与数据库无关,因为有一次我在调用XmlSerializer serializer = new XmlSerializer(type);时发现它挂起
我在 Windows 10 笔记本电脑(16GB 和大量磁盘)的 localhost 上的 IIS Express 中运行该网站。如果有人认为可以帮助我诊断问题,我也有 ReSharper。我已经为此奋斗了好几天,不知道还能做什么,但希望这里的人会同情我。
Re: D Stanley 的 cmets:“你有任何日志吗?你能在调试器中运行它以查看它挂在哪里吗?系统事件日志中有任何内容吗?”
有日志记录,但仅限于捕获的异常。没有什么可以帮助挂起情况。我可以在调试器中运行它,但是当它挂起时,我看不到它挂在哪里(它在外部代码中)。当我运行程序时,事件日志确实报告了“perflib”错误。如果您认为有帮助,我可以发布该信息。
更多信息。我安装了提琴手。应用程序挂起时,Fiddler 仍在进城。它显示的“进程”是“scriptedsandbox64”,它正在执行 I/O 并消耗 CPU 时间。
【问题讨论】:
-
你有日志吗?您可以在调试器中运行它以查看它挂在哪里吗?系统事件日志中是否有任何内容? (添加问题的答案,而不是在 cmets 中)
-
这不是真的“圆圈永远旋转,永远不会回来”,或者更确切地说,这是可疑的。通常,Web 请求应该在服务器上超时(并向客户端返回 5xx)或在客户端超时。我建议你在客户端(Fiddler、Burp)配置一个代理,看看客户端和服务器之间到底发生了什么。
-
好的,从技术上讲,它永远不会在我给它的时间内回来(有时超过一个小时)。怕是不知道怎么配置代理,有指针吗?
-
如果在 web.config 中将 debug 设置为 true,则请求不会超时。尝试将调试更改为 false 以允许请求超时。从异常中,查看堆栈跟踪是否为您提供了更好的信息。