当 运行 在本地主机上时,我的 C# 应用程序间歇性挂起

My C# application is intermittently hanging when running on localhost

有没有好心人有时间帮我弄清楚为什么我的应用程序间歇性挂起(并希望如何解决)?我正在 运行ning 一个来自 VS2015 的 Web 程序,它访问 SQL 服务器数据库。有时我会在我的网页上单击 link,一切正常。但其他时候,这个小圆圈会一直旋转下去,再也不会回来了。它似乎与数据库无关,因为有一次我发现它挂在对 XmlSerializer serializer = new XmlSerializer(type);

的调用上

我 运行 在 Windows 10 笔记本电脑(16GB 和大量磁盘)的本地主机上的 IIS Express 中设置网站。如果有人认为可以帮助我诊断问题,我也有 ReSharper。我已经为此奋斗了好几天,不知道还能做什么,但希望这里有人能可怜我。

Re: D Stanley's comments: "Do you have any logging? Can you run it in the debugger to see where it's hanging? Is there anything in the system event logs?"

有日志记录,但仅限于捕获的异常。没有什么可以帮助挂起情况。我可以在调试器中 运行 它,但是当它挂起时我看不到它挂在哪里(它在外部代码中)。当我 运行 程序时,事件日志确实报告了 "perflib" 错误。如果您认为有帮助,我可以 post 该信息。

更多信息。我安装了提琴手。当应用程序挂起时,Fiddler 仍在继续。它显示的 "Process" 是 "scriptedsandbox64",它正在执行 I/O 并消耗 CPU 时间。

我建议您在代码中添加更多日志消息,例如:

DateTime.Now.ToString("o") "Starting xxx"
DateTime.Now.ToString("o") "Finished xxx"

其中 xxx 是一些代码块的名称。您怀疑问题出在外部代码中,因此包装所有这些调用。

然后您可以看到应用程序在哪里花费了过多的时间。找到正确的区域后,也许可以添加更多日志记录以集中解决问题。

我的挂起问题的答案是使用本地 IIS 而不是 IIS Express。一旦我弄清楚如何为本地主机设置网站并开始 运行 本地 IIS,我的挂起就消失了。