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

WinForms连接Azure SignalR Service时遭遇401未授权错误

WinForms连接Azure SignalR Service时出现401未授权错误

我正在开发一款需连接部署在Web应用上的Azure SignalR Service的WinForms应用,尝试建立SignalR连接时遇到了401 Unauthorized错误。

WinForms应用初始化SignalR连接的代码

private async void InitializeSignalRConnection()
{
    await Task.Delay(5000);
    try
    {
        string token = await GetSignalRAccessToken();

        connection = new HubConnectionBuilder()
            .WithUrl("https://your-signalr-endpoint/client/?hub=notifications", options =>
            {
                options.AccessTokenProvider = () => Task.FromResult(token);
            })
            .WithAutomaticReconnect()
            .Build();

        await connection.StartAsync();
        
        connection.On<TransactionData>("SendMessageToClients", async (transactionData) =>
        {
            MessageBox.Show($"Transaction Received in WinForms: {transactionData.TransactionId}");
            await connection.InvokeAsync("AcknowledgeTransaction", transactionData.TransactionId, "Received and Processed by WinForms");
        });

        Console.WriteLine("SignalR connection started.");
    }
    catch (Exception ex)
    {
        MessageBox.Show($"Error initializing SignalR connection: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
}

Web应用相关配置代码

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddRazorPages();
builder.Services.AddCors(options => options.AddPolicy("testing", policy =>
{
    policy.AllowAnyHeader().AllowAnyMethod().AllowAnyOrigin();
}));

string azureSignalRConnectionString = builder.Configuration.GetValue<string>("AzureSignalRConnectionString");
builder.Services.AddSignalR().AddAzureSignalR(azureSignalRConnectionString);
builder.Services.AddControllers();

var app = builder.Build();
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("testing");
app.UseAuthorization();
app.MapHub<NotificationHub>("/notifications");
app.MapControllers();
app.MapRazorPages();
app.Run();

已尝试的操作

  • 验证SignalR连接URL
  • 检查CORS策略设置
  • 确认令牌已正确生成并传递

结果对比

预期结果:成功连接到SignalR hub
实际结果:出现401未授权错误

恳请帮忙分析可能导致该问题的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 11:47:20