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

ASP.NET Core Blazor部署VPS后SignalR C#调用报无效协商响应错误

解决方案

问题根源

错误信息里的<字符说明SignalR的协商请求返回了HTML内容(大概率是登录页面的重定向响应),而非预期的JSON格式协商数据。JS调用正常是因为浏览器会自动携带当前会话的Cookie,而Blazor的C# HubConnection在VPS部署环境下未正确传递授权Cookie,导致请求被认证中间件拦截并重定向。

具体修复步骤

  • 调整HubConnection的凭证配置
    替换UseDefaultCredentials为Credentials = HttpClientCredentials.Include,确保请求携带Cookie凭证:

    hubConnection = new HubConnectionBuilder()
        .WithUrl(_navigationManager.ToAbsoluteUri("/chathub"), 
                 options => {
                     options.Credentials = HttpClientCredentials.Include;
                 })
        .Build();
    

    注:UseDefaultCredentials适用于Windows身份认证场景,Cookie认证下应使用上述配置。

  • 检查认证中间件与SignalR端点顺序
    确保Program.cs中认证中间件在SignalR端点注册之前,保证请求先经过认证:

    app.UseAuthentication();
    app.UseAuthorization();
    
    // 必须在认证中间件之后注册Hub端点
    app.MapHub<ChatHub>("/chathub");
    
  • 排查IIS部署配置(若使用IIS)

    • 确认站点的「身份验证」模块中,Cookie认证已启用,避免不必要的匿名认证或Windows认证干扰;
    • 检查URL重写规则,确保/chathub/negotiate路径未被错误重定向;
    • 验证应用程序池身份权限,确保其能正常访问站点资源。
  • 验证协商请求响应
    用浏览器开发者工具或抓包工具查看/chathub/negotiate请求的响应内容,确认是否返回HTML登录页,以此确认问题是否由认证重定向导致。

内容的提问来源于stack exchange,提问作者Tester L.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:02:43