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

.NET Core SignalR本地正常,部署至Windows Server后报403禁止访问错误

SignalR部署到Windows Server(Plesk面板,.NET Framework 4.8)出现403禁止访问错误

本地运行正常的.NET Core Web应用,部署到Windows Server(Plesk面板,.NET Framework 4.8环境)后,signalr/negotiate请求返回403 - Forbidden: Access is denied.

排查与解决步骤

  • 检查Plesk站点权限:确保站点应用池身份拥有访问SignalR相关资源的权限,开启站点匿名认证(若依赖匿名访问)。
  • 确认SignalR路由注册:在Global.asax(.NET Framework环境)中添加路由配置,确保SignalR路由正确映射:
    protected void Application_Start()
    {
        RouteTable.Routes.MapHubs();
    }
    
  • 检查服务器防火墙规则:确认Windows Server防火墙或Plesk安全组未拦截80/443端口的长轮询请求,放行相关入站规则。
  • 验证环境兼容性:当前使用SignalR 2.4.1(适配.NET Framework),若项目基于.NET Core开发,需确认是否已正确适配.NET Framework环境,或考虑将部署环境切换为.NET Core运行时。
  • 修正SignalR路径:若站点部署在子目录,需调整JS中的Hub路径为实际路径,例如/your-subfolder/signalr。
  • 临时禁用ModSecurity:Plesk的ModSecurity规则可能误判SignalR请求,禁用后测试是否恢复正常,若正常则调整规则放行。

用户提供的相关代码

后端ChatHub实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;

public class ChatHub : Hub
{
    public void SendAll(string userid, string message)
    {
        (new Messages()).addMessage(message, DateTime.Now, userid);
        string name = (new Users(userid)).getname();
        Clients.All.broadcastMessage(name, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), message);
    }
}

页面头部脚本引用

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"  type="text/javascript"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/signalr.js/2.4.1/jquery.signalR.min.js"></script>

前端SignalR连接代码

$.connection.hub.url = "/signalr";
$.connection.hub.start({ transport: 'longPolling' }).done(function() {
    console.log("hub connection is made");
}).fail(function() {
    console.log("connection to the hub has been failed");
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:55:16