SignalR .net客户端连接到集线器,但不能hubProxy.Invoke()

use*_*912 3 proxy signalr

我有一个独特的情况.我开发了一个MVC 4网站和.NET客户端,它连接到托管SignalR集线器的站点.hubConnection对象成功连接到集线器.但是,如果我调用hubProxy.Invoke("Test"),创建的hubProxy对象根本不返回.Wait(); 我的中心只是回归了一个真实的bool;

有趣的是,当我通过VS和IIS express在本地运行网站和.net客户端时,一切正常.当我在完整的2008R2 IIS 7.5服务器和笔记本电脑上的.net客户端上运行网站时,它会失败.或者更恰当的是,线程只是停在HubProxy.Invoke("Test").Wait()并且永远不会返回(它只是继续运行).

更有趣的部分是当我开始运行Fiddler以查看正在发生的事情或者如果调用通过Web服务器时,问题就会自行解决并且一切正常.

似乎不知何故fiddler充当我的.net客户端的代理使hubProxy.Invoke()工作.如果我需要代理,我会认为我的HubConnection对象会失败?能够成功连接到集线器连接只是为了意识到线程似乎永远运行试图调用集线器代理上的函数,这有点误导?

任何人都可以澄清这种行为吗?关于在.net客户端正确创建HubConnection/Proxy以调用服务器上的方法需要做些什么的建议?

另外,这可能相关也可能不相关.我注意到,如果我将我的网站托管为:
http {s} // mywebsiteserver/mywebsite"并且我可以通过网络浏览器浏览,那么它将无法用作信号器连接字符串.我必须使用完全限定的http {s}的DNS名称// mywebsiteserver.mydomainname.xyz/mywebsite

有什么建议?

谢谢!麦克风

hal*_*r73 7

在我看来,开始或发出任何其他HTTP请求之前,您需要ServicePointManager.DefaultConnectionLimit在.NET客户端中将其设置为大于其默认值2的值.我发现10是运行单个SignalR的合理限制.HubConnectionHubConnection

通常,SignalR只有2个或更少的同时HTTP连接,但情况并非总是如此.我发现运行Fiddler有时会隐藏这个问题,但我不确定为什么.