Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Signalr IHubConnectionBuilder中无法识别带有MessagePack-AddMessagePackProtocol方法的Signal.Net客户端_Signalr_Blazor Server Side_Signalr.client_Asp.net Core Signalr_Signalrcore - Fatal编程技术网

Signalr IHubConnectionBuilder中无法识别带有MessagePack-AddMessagePackProtocol方法的Signal.Net客户端

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

新用户,正在学习信号器和Blazor服务器,希望有人能帮上忙。在Blazor服务器页面中让Signal.NET客户端使用MessagePack协议时遇到了困难

.csproj软件包已安装

<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;