【问题标题】:How to check success of HubConnection.StartAsync in SignalR for ASP.NET Core 2.0?如何在 SignalR for ASP.NET Core 2.0 中检查 HubConnection.StartAsync 是否成功?
【发布时间】:2017-11-01 14:03:05
【问题描述】:

将 SignalR 用于 ASP.NET Core 2.0、客户端 (1.0.0-alpha2-final)、C# VS2017。

连接代码是: await hubConnection.StartAsync(); 因为这是awaitvoid,我们如何测试客户端是否成功连接?在我的测试中,我在public override async Task OnConnectedAsync() 的服务器端有一个断点,但该断点并非总是命中,因此我知道有时客户端不连接。或者它确实连接但OnConnectedAsync()没有被触发?

客户端怎么知道连接成功了?

谢谢

编辑:更多信息。它确实在使用localhost 时触发OnConnectedAsync()(在VS 中调试);通过 ngrok 连接时,它不会触发 OnConnectedAsync()。也许这和proxy/CORS有关,我不熟悉。

编辑:看来客户端确实确实连接了,因为如果我将 URL 更改为不存在的 URL,它会给出 404。所以问题似乎是 OnConnectedAsync() 没有触发当客户端通过 ngrok 连接但直接连接到 localhost 时会触发。

【问题讨论】:

    标签: signalr asp.net-core-2.0 signalr.client asp.net-core-signalr


    【解决方案1】:

    StartAsync 不是void 方法,而是返回Task。如果客户端没有连接StartAsync throws(返回一个错误的任务)否则在客户端连接成功后异步调用将完成而没有错误(返回一个完成的任务)。

    【讨论】:

    • 你是对的。感谢您指出了这一点。更清楚地说,我的问题就像我在帖子的第二次编辑中解释的那样:当端点(URL)存在时,StartAsync does 抛出。当提供正确的 URL 时,它 不会 在服务器上抛出但 OnConnectedAsync() 在我使用 localhost 时触发,但 不会 在以下情况下触发我通过代理连接,例如 ngrok。为什么?
    猜你喜欢
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    相关资源
    最近更新 更多