安装Microsoft.AspNetCore.SignalR.Client后Blazor Server应用按钮失效并报错
Blazor Server安装SignalR.Client后按钮失效的解决办法
问题描述
在Ubuntu系统中执行dotnet new blazor -o MyBlazorAppServer创建全新Blazor Server项目,启动后运行正常,但安装Microsoft.AspNetCore.SignalR.Client包后,项目按钮停止工作,浏览器控制台抛出以下错误:
Uncaught (in promise) Error: Server returned an error on close: Connection closed with an error. at fn._processIncomingData (blazor.web.js:1:60779) at An.onreceive (blazor.web.js:1:54030) at WebSocket. (blazor.web.js:1:82175)
blazor.web.js:1 Uncaught (in promise) Error: Server returned an error on close: Connection closed with an error. InvalidDataException: Reading 'target' as String failed. at fn._processIncomingData (blazor.web.js:1:60779) at An.onreceive (blazor.web.js:1:54030) at WebSocket. (blazor.web.js:1:82175)
核心原因
Blazor Server本身依赖的SignalR组件版本与手动安装的Microsoft.AspNetCore.SignalR.Client版本不匹配,导致SignalR通信协议解析失败,最终断开连接,使组件交互失效。
解决步骤
统一包版本
- 打开项目根目录下的
.csproj文件 - 查看
<TargetFramework>节点的框架版本(例如net7.0) - 将
Microsoft.AspNetCore.SignalR.Client的版本修改为与框架版本一致的数值,示例:
(若使用.NET 6+,可直接移除<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="7.0.14" />Version属性,让SDK自动匹配框架版本)
- 打开项目根目录下的
清理重建项目
在终端执行以下命令:dotnet clean dotnet restore dotnet build重启项目,验证按钮功能是否恢复正常
内容的提问来源于stack exchange,提问作者Shamyrat Pashshyyev
相关产品推荐
相关产品推荐

