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

ASP.NET MVC中SignalR/hubs持续下载致网站无法加载问题求助

解决方案:SignalR hubs脚本持续下载导致页面加载卡住

我之前在做ASP.NET MVC + SignalR项目时也碰到过一模一样的情况,折腾了好一会儿才解决,给你几个具体的排查和解决方向:

  • 检查jQuery与SignalR版本兼容性
    SignalR 2.2.3对jQuery版本有严格要求:它支持jQuery 1.6.4及以上,但完全不兼容jQuery 3.x版本。你需要确保页面中引用的jQuery是2.x或1.10.x这类符合要求的版本,而且一定要在jquery.signalR-2.2.3.js之前加载jQuery(你的代码里顺序是对的,但再确认下实际引用的jQuery版本)。

  • 排查路由冲突问题
    有时候MVC的自定义路由会拦截SignalR的请求,导致脚本加载异常。你可以:

    1. 确保Startup.Configuration中的app.MapSignalR()调用,放在MVC路由注册(RouteConfig.RegisterRoutes)之前;
    2. 检查RouteConfig里有没有类似signalr/{*pathInfo}的路由规则,如果有,调整规则避免匹配SignalR的路径。
  • 检查自动生成的代理脚本语法
    虽然你能在新标签页打开signalr/hubs,但生成的代理脚本可能存在隐性语法错误(比如模型序列化失败导致的代码异常)。打开signalr/hubs的内容,仔细检查:

    • 有没有未闭合的括号、引号;
    • 你的Notification类是否存在循环引用、无法被JSON序列化的属性(比如非公共属性、复杂嵌套类型)。
      可以先简化Notification类,只保留简单的字符串/数值属性,测试是否还会出现加载卡住的问题。
  • 查看浏览器开发者工具的详细错误
    按F12打开浏览器开发者工具,切换到「网络」标签重新加载页面:

    • 查看signalr/hubs请求的状态码(正常应该是200);
    • 切换到「控制台」标签,检查有没有JS报错或未捕获的异常。有时候“持续下载”的表象下,其实是脚本加载后执行出错导致页面阻塞。
  • 确认自定义脚本的执行时机
    你的signalRPlatform.js和Platform.js中如果有SignalR初始化代码,一定要确保它们在DOM完全加载后执行,比如用jQuery的DOM就绪事件包裹:

    $(function() {
        // 这里写SignalR连接初始化代码
        var hub = $.connection.notifier;
        // ...其他逻辑
    });
    

    避免脚本刚加载就执行SignalR相关逻辑,导致未准备好的资源阻塞页面加载。

  • 显式指定SignalR路由路径
    尝试在Startup中显式指定SignalR的路由路径,确保和视图中的引用一致:

    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR("/signalr", new HubConfiguration());
    }
    

    同时视图中引用改为:

    <script src="~/signalr/hubs"></script>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:28:19