C# .NET控制台信号器客户端与.NET核心信号器服务器

C# .NET控制台信号器客户端与.NET核心信号器服务器,c#,asp.net-core,signalr,C#,Asp.net Core,Signalr,我需要在.NET控制台和ASP.NET核心2.0应用程序之间交换数据。第二个服务器已经托管了一个信号服务器: public class MyHub : Hub { public override async Task OnConnectedAsync() { await Clients.All.InvokeAsync("Send", $"{Context.ConnectionId} connected"); }

我需要在.NET控制台和ASP.NET核心2.0应用程序之间交换数据。第二个服务器已经托管了一个信号服务器:

public class MyHub : Hub
{
    public override async Task OnConnectedAsync()
    {
        await Clients.All.InvokeAsync("Send", $"{Context.ConnectionId} connected");
    }

    public Task Send(string message)
    {
        return Clients.All.InvokeAsync("Send", $"{Context.ConnectionId}: {message}");
    }
}

app.UseSignalR(routes =>
{
     routes.MapHub<MyHub>("hubs");
});
公共类MyHub:Hub
{
公共覆盖异步任务OnConnectedAsync()
{
wait Clients.All.InvokeAsync(“Send“,$”{Context.ConnectionId}connected”);
}
公共任务发送(字符串消息)
{
返回Clients.All.InvokeAsync(“Send”,$“{Context.ConnectionId}:{message}”);
}
}
app.usesigner(路由=>
{
路线。MapHub(“枢纽”);
});
我可以从html页面调用函数。因此它起作用了。 现在,我在解决方案中添加了一个.NET 4.6控制台应用程序:

public static HubConnection _connection;

static void Main(string[] args)
{
    _connection = new HubConnection("http://localhost:51278/hubs");
    var myHub = _connection.CreateHubProxy("MyHub");

    _connection.Closed += OnDisconnected;
    OnDisconnected();

    myHub.Invoke<string>("Send", "Hello World ").ContinueWith(task => {
        if (task.IsFaulted)
        {
            Console.WriteLine("There was an error calling send: {0}", task.Exception.GetBaseException());
        }
        else
        {
            Console.WriteLine(task.Result);
        }
    });

    _connection.Stop();
}

static void OnDisconnected()
{
    Console.WriteLine("Disconnected. Try to connect...");
    var t = _connection.Start(new LongPollingTransport());

    bool result = false;
    t.ContinueWith(task => 
    {
        if (!task.IsFaulted)
        {
            result = true;
            Console.WriteLine("Connected");
        }
    }).Wait();

    if (!result)
    {
        OnDisconnected();
    }
}
公共静态HUB连接\u连接;
静态void Main(字符串[]参数)
{
_连接=新的轮毂连接(“http://localhost:51278/hubs");
var myHub=_connection.CreateHubProxy(“myHub”);
_连接。关闭+=断开连接;
OnDisconnected();
myHub.Invoke(“发送”、“你好世界”).ContinueWith(任务=>{
if(task.IsFaulted)
{
WriteLine(“调用send:{0}”、task.Exception.GetBaseException()时出错);
}
其他的
{
Console.WriteLine(task.Result);
}
});
_连接。停止();
}
静态空洞不连通()
{
Console.WriteLine(“断开连接。尝试连接…”);
var t=_connection.Start(新的LongPollingTransport());
布尔结果=假;
t、 继续(任务=>
{
如果(!task.IsFaulted)
{
结果=真;
控制台。写入线(“连接”);
}
}).Wait();
如果(!结果)
{
OnDisconnected();
}
}
但结果是:

断开连接。尝试连接

断开连接。尝试连接


没有别的了。我不熟悉SignalR,不知道如何进一步调试这种行为。

SignalR for.Net Core与SignalR for完整.Net framework的早期版本不兼容

在完整框架中编写的SignalR客户端不能与Asp.Net核心中的集线器一起使用(反之亦然)

这是GitHub的确认