You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Azure SignalR Service连接SignalR Hub时遇URI格式错误求助

解决方法

核心错误原因

你混淆了Azure SignalR连接字符串的使用场景:

  • Azure SignalR的连接字符串是给服务器端用的,用来让你的.NET Core控制台服务器和Azure SignalR Service建立关联;
  • 客户端(WinForms)需要连接的是你的本地服务器的Hub地址,而不是直接用Azure SignalR的连接字符串。

具体修复步骤

  1. 修改客户端连接地址
    把客户端的HubConnection创建代码改成指向你的本地服务器Hub端点,比如你的控制台服务器运行在http://localhost:5000,那么地址应该是http://localhost:5000/ChatSampleHub:

    // 替换成你本地服务器的实际地址
    var hubUrl = "http://localhost:5000/ChatSampleHub";
    hubConnection = new HubConnectionBuilder().WithUrl(hubUrl).Build();
    
  2. 修正SignalR客户端API(适配ASP.NET Core SignalR)
    你当前代码里的CreateHubProxy是旧版ASP.NET SignalR(Microsoft.AspNet.SignalR.Client)的API,如果你用的是ASP.NET Core SignalR客户端(Microsoft.AspNetCore.SignalR.Client包),需要改用新版API,同时注意WinForms UI更新必须切换到主线程:

    private async void buttonConnect_Click(object sender, EventArgs e)
    {
        var hubUrl = "http://localhost:5000/ChatSampleHub";
        hubConnection = new HubConnectionBuilder()
            .WithUrl(hubUrl)
            .Build();
    
        // 直接通过hubConnection注册消息处理方法,无需hubProxy
        hubConnection.On<string>("MessageReceived", message =>
        {
            // WinForms中跨线程更新UI需要调用Invoke切换到主线程
            this.Invoke((Action)(() => AppendMessageToTextBox(message)));
        });
    
        try
        {
            await hubConnection.StartAsync(); // 新版方法为StartAsync,而非Start
            MessageBox.Show("Connected successfully");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Connection failed: " + ex.Message);
        }
    }
    
  3. 确保客户端NuGet包版本匹配
    服务器用的是ASP.NET Core SignalR,客户端必须安装Microsoft.AspNetCore.SignalR.Client NuGet包,禁止使用旧版的Microsoft.AspNet.SignalR.Client(两者架构不兼容,无法互通)。

额外说明

如果需要客户端直接连接Azure SignalR Service(绕过你的服务器),需要启用Azure SignalR的无服务器模式,并使用专门的客户端连接字符串,同时你的业务逻辑需要调整为通过Azure SignalR的REST API发送消息。但基于你当前的架构(有.NET Core服务器),优先推荐客户端连接本地服务器的方案。


内容的提问来源于stack exchange,提问作者duta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 10:08:16