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

.NET Core 6 SignalR部署至IIS后无法正常工作求助

问题描述

本地Visual Studio 2022运行.NET Core 6项目时SignalR功能正常,但发布到IIS服务器后,SignalR连接失败,报错404。

相关代码:

  • JavaScript连接代码:
const connection = new signalR.HubConnectionBuilder().withUrl("/checkproduct").build();
  • Program.cs配置:
app.MapHub<ProductHub>("/checkproduct");

报错信息:

Failed to load resource: the server responded with a status of 404 (Not Found) signalr.js:3082
[2024-01-22T06:11:53.892Z] Error: Failed to complete negotiation with the server: Error: Not Found
[2024-01-22T06:11:53.893Z] Error: Failed to start the connection: Error: Not Found

排查与解决步骤
  • 检查IIS应用程序池设置
    把应用程序池的.NET CLR版本改成无托管代码——.NET Core应用是自托管的,不需要IIS的托管CLR,设置错了会导致请求路由异常。

  • 确认站点URL路径匹配
    如果IIS站点部署在子应用下(比如http://服务器地址/MyApp),前端SignalR连接URL必须带上子应用路径:

    const connection = new signalR.HubConnectionBuilder().withUrl("/MyApp/checkproduct").build();
    

    或者用相对路径自动适配,避免硬编码:

    const connection = new signalR.HubConnectionBuilder().withUrl(`${window.location.pathname}checkproduct`).build();
    
  • 安装ASP.NET Core模块
    .NET Core应用部署到IIS必须装ASP.NET Core托管捆绑包(ASP.NET Core Hosting Bundle),它负责把请求转发给.NET Core的Kestrel服务器。没装的话,SignalR的WebSocket或长轮询请求没法被正确处理,直接报404。

  • 验证发布文件完整性
    检查服务器上的发布目录:

    • 确认wwwroot下的signalr.js/signalr.min.js存在且路径正确;
    • 确认ProductHub所在的程序集已经正确部署,没有缺失依赖文件。
  • 启用IIS WebSocket功能
    SignalR依赖WebSocket协议,得确保IIS开启了WebSocket:

    1. 打开IIS管理器,找到目标站点,在功能视图里打开WebSocket;
    2. 如果没启用,去服务器管理器的角色和功能里添加WebSocket协议。
  • 查看应用日志找细节
    在服务器上开启.NET Core应用的日志,看具体错误原因。可以修改appsettings.json的日志配置:

    "Logging": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft.AspNetCore.SignalR": "Debug",
        "Microsoft.AspNetCore.Http.Connections": "Debug"
      }
    }
    

    日志一般在%ProgramFiles%\IIS\Asp.Net Core Module\V2目录,或者应用自己的日志目录里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:17