Signalr IHubConnectionBuilder中无法识别带有MessagePack-AddMessagePackProtocol方法的Signal.Net客户端
新用户,正在学习信号器和Blazor服务器,希望有人能帮上忙。在Blazor服务器页面中让Signal.NET客户端使用MessagePack协议时遇到了困难 .csproj软件包已安装Signalr IHubConnectionBuilder中无法识别带有MessagePack-AddMessagePackProtocol方法的Signal.Net客户端,signalr,blazor-server-side,signalr.client,asp.net-core-signalr,signalrcore,Signalr,Blazor Server Side,Signalr.client,Asp.net Core Signalr,Signalrcore,新用户,正在学习信号器和Blazor服务器,希望有人能帮上忙。在Blazor服务器页面中让Signal.NET客户端使用MessagePack协议时遇到了困难 .csproj软件包已安装 <ItemGroup> <PackageReference Include="Autofac" Version="5.2.0" /> <PackageReference Include="Autofac.Extens
<ItemGroup>
<PackageReference Include="Autofac" Version="5.2.0" />
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
<!-- <PackageReference Include="MessagePack" Version="1.9.3" /> -->
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="3.1.7" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="3.1.7" />
</ItemGroup>
导致生成错误:
错误CS1061:“IHubConnectionBuilder”不包含“AddMessagePackProtocol”的定义,并且找不到接受类型为“IHubConnectionBuilder”的第一个参数的可访问扩展方法“AddMessagePackProtocol”(是否缺少using指令或程序集引用?)。。。。。
有人能帮忙吗?我是否缺少使用引用的程序集@
Blazor服务器页面
@page "/"
@using System.Threading;
@using System.Collections.Generic;
@using Microsoft.AspNetCore.SignalR.Client;
@using WebApp.Data;
@inject NavigationManager NavigationManager
<h1>Blazor Server App</h1>
<div>Latest message is => @_latestMessage</div>
<div id="scrollbox">
@foreach (var item in _messages)
{
<div>
<div>@item</div>
</div>
}
<hr />
</div>
@code {
private HubConnection hubConnection;
private string _latestMessage = "";
private List<string> _messages = new List<string>();
public bool IsConnected => hubConnection.State == HubConnectionState.Connected;
protected override async Task OnInitializedAsync()
{
var hubUrl = NavigationManager.BaseUri.TrimEnd('/') + "/motionhub";
// Uri uri = NavigationManager.ToAbsoluteUri("/motionhub");
try
{
hubConnection = new HubConnectionBuilder()
.WithUrl(hubUrl)
.AddMessagePackProtocol()
.Build();
hubConnection.On<string>("SendMotionDetection", ReceiveMessage);
await hubConnection.StartAsync();
Console.WriteLine("Index Razor Page initialised, listening on signalR hub url => " + hubUrl.ToString());
Console.WriteLine("Hub Connected => " + IsConnected);
}
catch (Exception e)
{
Console.WriteLine("Encountered exception => " + e);
}
}
private void ReceiveMessage(string message)
{
try
{
Console.WriteLine("Hey! I received a message");
_latestMessage = message;
_messages.Add(_latestMessage);
StateHasChanged();
}
catch (Exception ex)
{
Console.Error.WriteLine("An exception was encountered => " + ex.ToString());
}
}
}
@page/“
@使用系统线程;
@使用System.Collections.Generic;
@使用Microsoft.AspNetCore.signal.Client;
@使用WebApp.Data;
@注入NavigationManager NavigationManager
Blazor服务器应用程序
最新消息是=>@\u latestMessage
@foreach(消息中的变量项)
{
@项目
}
@代码{
专用HUB连接HUB连接;
私有字符串_latestMessage=“”;
私有列表_messages=新列表();
public bool IsConnected=>hubConnection.State==HubConnectionState.Connected;
受保护的重写异步任务OnInitializedAsync()
{
var hubUrl=NavigationManager.BaseUri.TrimEnd('/')+“/motionhub”;
//Uri=NavigationManager.ToAbsolutionUri(“/motionhub”);
尝试
{
hubConnection=新的HubConnectionBuilder()
.WithUrl(hubUrl)
.AddMessagePackProtocol()文件
.Build();
hubConnection.On(“SendMotionDetection”,ReceiveMessage);
等待hubConnection.StartAsync();
Console.WriteLine(“初始化了索引页面,监听信号器中心url=>”+hubUrl.ToString());
Console.WriteLine(“已连接集线器=>”+已断开连接);
}
捕获(例外e)
{
WriteLine(“遇到异常=>”+e);
}
}
私有无效接收消息(字符串消息)
{
尝试
{
WriteLine(“嘿!我收到一条消息”);
_最新消息=消息;
_messages.Add(_latestMessage);
StateHasChanged();
}
捕获(例外情况除外)
{
Console.Error.WriteLine(“遇到异常=>”+ex.ToString());
}
}
}
最后,通过添加以下内容来编译:
@using Microsoft.Extensions.DependencyInjection;
希望这能为其他遇到类似问题的新用户节省一些时间
@using Microsoft.Extensions.DependencyInjection;