VB.Net与JavaScript使用SignalR求助:前端报错及后端配置
问题解决方案
一、解决signalR is not defined报错问题
这个报错的核心原因是未在ASPX页面中引入SignalR客户端JavaScript库,同时前端连接地址也需匹配服务端配置,具体修复步骤如下:
- 引入SignalR客户端JS库
在ASPX页面的<head>或<body>末尾添加脚本引用(可使用官方CDN,或本地项目安装NuGet包后引用本地文件):
<!-- 引入SignalR客户端库 --> <script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/7.0.10/signalr.min.js"></script>
若使用本地文件,需确保路径正确,比如项目安装Microsoft.AspNetCore.SignalR.Client包后,引用wwwroot/lib/microsoft-signalr/signalr.min.js。
- 修正前端连接地址
服务端配置为app.MapHub("/chat"),因此前端withUrl需指向该Hub地址,而非"/Chat/Index",修改后的代码片段:
var connection = new signalR.HubConnectionBuilder() .withUrl("https://localhost:57553/chat", { skipNegotiation: true, transport: signalR.HttpTransportType.WebSockets }) .build();
- 确保脚本加载顺序正确
自定义的NotificationPage.js必须在SignalR客户端库之后加载,避免自定义代码执行时SignalR尚未初始化。
二、VB后端等效于app.MapHub("/chat")的配置
.NET 6+顶级语句模式(Program.vb)
Imports Microsoft.AspNetCore.SignalR Dim builder = WebApplication.CreateBuilder(args) ' 注册SignalR服务 builder.Services.AddSignalR() Dim app = builder.Build() ' 配置Hub路由,ChatHub为你的Hub类名称 app.MapHub(Of ChatHub)("/chat") app.Run()
旧版.NET Framework/.NET Core 3.x Startup模式(Startup.vb)
Public Sub Configure(app As IApplicationBuilder, env As IWebHostEnvironment) ' 其他中间件配置代码... app.UseEndpoints(Sub(endpoints) endpoints.MapHub(Of ChatHub)("/chat") End Sub) End Sub
内容的提问来源于stack exchange,提问作者Jacob Kresak
相关产品推荐
相关产品推荐

