gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:01:06 24 4
gpt4 key购买 nike

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

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

更有趣的部分是,当我开始运行 Fiddler 以查看发生了什么,或者调用是否通过网络服务器时,问题会自行解决并且一切正常。

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

谁能澄清这种行为?关于我需要做什么才能在 .net 客户端正确创建 HubConnection/Proxy 以调用服务器上的方法有什么建议吗?

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

有什么建议吗?

谢谢!迈克

最佳答案

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

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

关于proxy - SignalR .net 客户端连接到集线器,但不能 hubProxy.Invoke(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com