首页 > 解决方案 > SignalR 2 StartAsync 永远不会返回

问题描述

在类的以下部分中,StartAsync 永远不会返回。

任何想法为什么?服务器似乎工作正常,并且可以与 Javascript 客户端一起使用。

SignalR 客户端版本为 v1.0.0-rc1-final

    public HubUtil(string baseUrl) //string clientId
    {
        connection = new HubConnectionBuilder()
            .AddJsonProtocol()
            .WithUrl(baseUrl)  // baseUrl is "https://hostname/hubname"
            .Build();

        connection.Closed += Connection_Closed;
        StartIfNeededAsync();
    }

    private Task Connection_Closed(Exception arg)
    {
        return StartIfNeededAsync();
    }

    public async Task StartIfNeededAsync()
    {
        if (_connectionState == ConnectionState.Connected)
        {
            return;
        }

        try
        {
            await connection.StartAsync(); // Never connects
            _connectionState = ConnectionState.Connected;
        }
        catch (Exception ex)
        {
            _connectionState = ConnectionState.Faulted;
            throw;
        }
    }

从一个基本的控制台应用程序中,这就是 hubutil 的调用方式:

    static void Main(string[] args)
    {
        var hub = new HubUtil("https://host/hubname");
        hub.Invoke("checkin", "id", "");
    }

标签: c#signalrsignalr.client

解决方案


我已经回答了关于 SO 的类似问题。我不想在这里复制和粘贴它,所以这里是链接:

https://stackoverflow.com/a/58551924/603807

由于这是指向我自己在 SO 网站上的答案的链接,我希望这对于不喜欢仅链接答案的版主来说是一个通行证。


推荐阅读