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

能否在非ASP.NET Core的ASP.NET项目中使用SignalR?求相关教程

传统ASP.NET项目(非Core)中使用SignalR的可行性及实现步骤

完全可以在依赖Page Postback的传统ASP.NET项目中使用SignalR,但要注意使用ASP.NET SignalR(这是专门针对.NET Framework版ASP.NET的库,和ASP.NET Core SignalR是两个独立的产品,不能混用),二者不会和Postback机制冲突。

实现步骤

1. 安装ASP.NET SignalR包

在Visual Studio中,通过NuGet包管理器安装Microsoft.AspNet.SignalR,或者在Package Manager Console执行命令:

Install-Package Microsoft.AspNet.SignalR

2. 配置SignalR路由

打开项目的Global.asax.cs,在Application_Start方法中添加路由注册:

using System.Web.Routing;
using Microsoft.AspNet.SignalR;

protected void Application_Start(object sender, EventArgs e)
{
    // 保留原有项目代码,新增以下行
    RouteTable.Routes.MapHubs();
}

3. 创建Hub类

在项目中新建类(示例命名为ChatHub.cs),继承自Hub:

using Microsoft.AspNet.SignalR;

public class ChatHub : Hub
{
    public void SendMessage(string userName, string content)
    {
        // 向所有连接的客户端推送消息
        Clients.All.receiveNewMessage(userName, content);
    }
}

4. 在ASP.NET页面中集成客户端逻辑

以Web Form页面(如Default.aspx)为例,在页面末尾添加脚本引用:

<script src="Scripts/jquery-1.6.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.4.3.min.js"></script>
<script src="/signalr/hubs"></script>

注:jQuery版本需和SignalR兼容,优先使用NuGet包自带的jQuery文件。

接着添加客户端交互脚本:

<script>
    $(function () {
        // 建立Hub连接
        var chatHub = $.connection.chatHub;

        // 定义客户端接收消息的方法
        chatHub.client.receiveNewMessage = function (userName, content) {
            $('#messageList').append(`<li><strong>${userName}</strong>: ${content}</li>`);
        };

        // 启动连接后绑定发送按钮事件
        $.connection.hub.start().done(function () {
            $('#sendBtn').click(function () {
                var name = $('#userName').val();
                var msg = $('#messageContent').val();
                chatHub.server.sendMessage(name, msg);
                $('#messageContent').val('');
            });
        });
    });
</script>

最后添加页面交互元素:

<div>
    <input type="text" id="userName" placeholder="你的名字" />
    <input type="text" id="messageContent" placeholder="输入消息" />
    <button id="sendBtn">发送</button>
</div>
<ul id="messageList"></ul>

5. 验证功能

启动项目,打开多个浏览器窗口访问该页面,发送消息即可看到实时推送效果,同时原有Page Postback功能不受影响。

注意事项

  • 项目的.NET Framework版本需≥4.5,这是ASP.NET SignalR的最低要求。
  • 若项目使用Forms认证,可在Hub类上添加[Authorize]属性限制访问权限。
  • 不要混淆ASP.NET SignalR和ASP.NET Core SignalR,后者仅适用于Core项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:47:19