【发布时间】:2014-11-19 14:12:47
【问题描述】:
Windows 8.1。 IIS 8.5。 SignalR 版本:
<package id="Microsoft.AspNet.SignalR" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.Core" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.JS" version="2.1.2" targetFramework="net451" />
<package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.1.2" targetFramework="net451" />
每当我重建我的项目/解决方案时,IIS 都会达到最大 CPU 使用率,并且我无法重新加载我的页面。我检查了 procmon.exe,它报告了大量(>20 000/s)的“RegOpenKey/RegQueryKey”操作,如下所示:
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegQueryKey
Result: SUCCESS
Path: HKLM
TID: 23272
Duration: 0.0000059
Query: HandleTags
HandleTags: 0x0
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegOpenKey
Result: REPARSE
Path: HKLM\SYSTEM\CurrentControlSet\Services\SignalR\Performance
TID: 23272
Duration: 0.0000121
Desired Access: Read
Date & Time: 19.11.2014 10:47:20
Event Class: Registry
Operation: RegOpenKey
Result: NAME NOT FOUND
Path: HKLM\System\CurrentControlSet\Services\SignalR\Performance
TID: 23272
Duration: 0.0000062
Desired Access: Read
这些是我用来重现此问题的步骤:
- 一切正常。
- 我写了一些代码并编译
- SignalR 使用 WebSocket 传输重新连接并在响应标头中获取此响应:“HTTP/1.1 101 Switching Protocols”
- 我发出一个请求,但 IIS 工作进程挂起,再也没有回来,或者我等了 2-3 分钟,一切又恢复正常了。
我也在 IIS Express 中遇到过这种情况。通常我通过终止 IIS Worker 进程并重新加载来解决这个问题。这是权限问题吗?目前应用程序池在我的本地用户下运行,但我尝试了应用程序池标识,结果相同。 “HKLM\System\CurrentControlSet\Services\SignalR\Performance”应该是什么?目前我的机器上没有这样的注册表项。
【问题讨论】: