Angular应用无法连接ASP.Net SignalR服务器报错求助
解决SignalR连接报错"Cannot read properties of undefined (reading 'length')"
版本兼容性问题(最常见原因)
.NET Framework的SignalR属于旧版(ASP.NET SignalR 2.x),无法与Angular端的@microsoft/signalr包兼容,必须使用适配旧版的@aspnet/signalr包。
执行以下命令替换依赖:npm uninstall @microsoft/signalr npm install @aspnet/signalr客户端连接代码中导入包要对应:
import * as signalR from '@aspnet/signalr';移除CORS配置冲突
服务器端同时全局启用AllowAll和Hub上单独配置[EnableCors]可能导致规则冲突,建议二选一:
方案1:保留全局配置,删除Hub类上的[EnableCors]特性
方案2:删除全局app.UseCors(CorsOptions.AllowAll),只保留Hub上的[EnableCors]配置验证连接路径正确性
确保Angular端withUrl的路径和服务器MapSignalR的路径完全一致,比如服务器配置的是/Art,客户端连接地址应为http://你的服务器地址/Art,注意不要遗漏路径或拼写错误。启用详细日志排查
服务器端开启详细错误日志:public void Configuration(IAppBuilder app) { app.UseCors(CorsOptions.AllowAll); app.MapSignalR("/Art", new HubConfiguration { EnableDetailedErrors = true }); }Angular端开启Debug级日志:
const connection = new signalR.HubConnectionBuilder() .withUrl('http://localhost:xxxx/Art') .configureLogging(signalR.LogLevel.Debug) .build();查看日志中更详细的错误信息,定位具体问题。
内容的提问来源于stack exchange,提问作者oded bartov
相关产品推荐
相关产品推荐

