【发布时间】:2014-07-25 21:02:21
【问题描述】:
我有一个 ASP.NET Web 应用程序,它带有一个简单的 HTML 页面和一些通过 SignalR 进行通信的 JavaScript。这很好用。 现在我正在尝试从另一个项目(在同一解决方案中)并使用 .NET Signalr Client Api 调用集线器上的方法:
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start();
hub.Invoke("SendMessage", "", "");
最后一行导致 InvalidOperationException: The connection has not been established. 但我能够从我的 JavaScript 代码连接到集线器。
如何使用 C# 代码连接到 Hub?
更新
写完这篇文章的那一刻,我尝试添加.Wait(),它成功了!
这样就可以了:
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start().Wait();
hub.Invoke("SendMessage", "", "");
【问题讨论】:
-
非常感谢!添加 .Wait() 也对我有用。我在 Windows 服务中托管了一个集线器,该服务还需要对集线器的客户端引用,以便它调用集线器中的方法(基于服务中的计时器)。相同的代码来创建客户端引用并且在我将 .Wait() 添加到 Start() 方法之前也得到了相同的“连接尚未建立”错误。很有趣,因为我正在从一个没有使用 .Wait() 的示例开始工作,但工作正常。可能只是两个应用程序之间的某种时间差异。