将SignalR添加到Net 6 Web API并从Winforms应用程序(.net fx4.8)连接-未找到集线器

jk9hmnmh  于 2023-01-31  发布在  .NET
关注(0)|答案(1)|浏览(206)

我尝试将signalr添加到webapi中,我创建了CucinaHub类:

public class CucinaHub : Hub
{
    static ConcurrentDictionary<string, string> _users = new ConcurrentDictionary<string, string>();

    #region Client Methods

    public void SetUserName(string userName)
    {
        _users[Context.ConnectionId] = userName;
    }

    #endregion Client Methods
}

并配置SignalR:

services.AddSignalR();

app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapHub<CucinaHub>("/cucinahub");
        });

然后在Windows窗体应用程序中,我使用以下代码连接集线器:

_signalRConnection = new HubConnection($"{Properties.Settings.Default.URL}/api", true);

        _hubProxy = _signalRConnection.CreateHubProxy("/cucinahub");

        _hubProxy.On("GetValvole", async () => await GetValvole());
        
        try
        {
            //Connect to the server
            await _signalRConnection.Start();
        }
        catch (Exception ex)
        {
            Log.Error(ex.ToString());
        }

我总是得到404响应代码:
托管环境:开发内容根路径:D:\SwDev\PigsutffHTML\服务器\通用\通用。WebApiCore正在侦听:http://localhost:5000应用程序已启动。按Ctrl+C关闭。信息:Microsoft.AspNetCore.主机托管.诊断[1]请求正在启动HTTP/1.1获取http://localhost:5000/api/信号/协商?客户端协议= 2.1和连接数据=[%7B%22名称%22:%22/cucinahub %22%7D] - -警告:Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]无法确定用于重定向的https端口。信息:诊断[2]请求已完成HTTP/1.1获取http://localhost:5000/api/signalr/negotiate?clientProtocol = 2.1&connectionData =[%7B%22名称%22:%22/连接集线器%22%7D] - - - 404 0 - 122.4090毫秒
错误在哪里?谢谢

zhte4eai

zhte4eai1#

简短回答-您不能混合使用.NET 4.x框架和.NET核心服务器/客户端。任何一个都不能与另一个对话。您必须升级您的客户端。更多信息请参见此SO回答。

相关问题