gpt4 book ai didi

c# - SignalR 2.1.0 : The connection has not been established

转载 作者:可可西里 更新时间:2023-11-01 08:23:53 29 4
gpt4 key购买 nike

我有一个 ASP.NET Web 应用程序,其中包含一个简单的 HTML 页面和一些通过 SignalR 进行通信的 JavaScript。那很好用。现在,我正在尝试从另一个项目(在同一解决方案中)调用 Hub 上的方法并使用 .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# 代码连接到集线器?

更新

写完这篇文章后,我尝试添加 .Wait() 并且成功了!所以这样做:

        var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start().Wait();
hub.Invoke("SendMessage", "", "");

最佳答案

HubConnection.Start 返回一个 Task,您需要先完成它才能调用方法。

执行此操作的两种方法是在异步方法中使用 await,或者在非异步方法中使用 Task.Wait():

public async Task StartConnection()
{
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
await connection.Start();
await hub.Invoke("SendMessage", "", "");
// ...
}

// or

public void StartConnection()
{
var connection = new HubConnection("http://localhost:32986/");
var hub = connection.CreateHubProxy("MessageHub");
connection.Start().Wait();
hub.Invoke("SendMessage", "", "").Wait();
// ...
}

ASP.NET SignalR Hubs API Guide for the .NET client. 的“如何建立连接”部分进入更多细节。

关于c# - SignalR 2.1.0 : The connection has not been established,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24964451/

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