我想在WindowsService中使用SignalR,并在其他计算机上将客户端作为控制台/ WPF应用程序。所以SignalR是Selfhosted / OWIN。
它与localhost的客户端完美配合。如果我尝试通过IP地址或DNS名称连接,则连接需要4分钟才能连接。
hubConnection.Start存在问题,无法返回4分钟。我已经开始追踪了。以下是跟踪的屏幕截图:
正如您所看到的,需要4分钟。我在发布版本配置中遇到同样的问题,我在Win 7 Pro x64机器上以管理员身份运行VS2015,防火墙已关闭。
我可以使用此示例解决方案http://www.codeproject.com/Articles/804770/Implementing-SignalR-in-Desktop-Applications重现问题,只需将客户端连接URL从localhost更改为IP地址即可。不同的端口具有相同的行为
经过长达4分钟的连接时间后,一切都运转正常,没有长时间延迟。我已经使用SignalR 2.0.3,2.1.1和2.2.1尝试过它。
我还嵌入了SignalR 2.1.1 SourceCode并分析了SignalR.Client来源中的问题。
在此行,调试器不会返回4分钟:
return Task.Factory.FromAsync<HttpWebResponse>(request.BeginGetResponse, ar => (HttpWebResponse)request.EndGetResponse(ar), null);
在HttpHelper.cs中的方法公共静态任务GetHttpResponseAsync(此HttpWebRequest请求)
更新: 正如Pawel在评论中所说,我试过Fiddler分析问题。 没有服务器或客户端的条目。这在4分钟后没有改变。 4分钟后的工作沟通也是Fiddler看不到的。也许是因为它回退到localhost连接并且Fiddler无法看到它?
但真正奇怪的是,如果我以普通用户而不是管理员的身份启动客户端,客户端会成功连接(快速),而在Fiddler中,一切看起来都很好,我也可以看到通信在那里发生。
现在以某种方式工作了。但我真的想知道以管理员身份启动客户端有什么问题?