簡體   English   中英

.Net Core SignalR 無法在啟動時添加或使用

[英].Net Core SignalR cannot add or use in startup

我最近回到了一個使用 SignalR 的舊 .Net Core 應用程序。

我認為當時唯一可用於 .Net Core 應用程序的 SignalR NuGet 包是預覽版。 它奏效了。

我現在在一台新機器上,不知道這個包的預覽提要是什么,所以我卸載了它並安裝了這個:

> Install-Package Microsoft.AspNet.SignalR.Core -Version 2.4.1

除了 Startup.cs 文件中的這兩個錯誤之外,通過一些命名空間更改,一切似乎都很好。

錯誤 CS1061“IServiceCollection”不包含“AddSignalR”的定義,並且找不到接受“IServiceCollection”類型的第一個參數的可訪問擴展方法“AddSignalR”(您是否缺少 using 指令或程序集引用?)

錯誤 CS1061“IApplicationBuilder”不包含“UseSignalR”的定義,並且找不到接受“IApplicationBuilder”類型的第一個參數的可訪問擴展方法“UseSignalR”(您是否缺少 using 指令或程序集引用?)

我環顧四周,除了有人建議您需要安裝我找不到的Microsoft.AspNetCore.SignalR.Http之外,沒有太多可用的東西。 其他人建議您需要安裝此:

Install-Package Microsoft.AspNetCore.SignalR.Client -Version 1.1.0

我試過了,但錯誤仍然存​​在,我該如何讓這些消失?

在此處輸入圖像描述

我通過替換代碼解決了這個問題

app.UseSignalR(routes =>
        {
            routes.MapHub<NotifyHub>("notify"); 
        });

app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<NotifyHub>("/notify");
        });

我正在使用點網 5.0

正如@Farman 已經指出的那樣,解決方案是使用.UseEndpoints() 正如 MSFT 所記錄的,這是通過替換.UseSignalR()的推薦方法,

推薦的方法:

app.UseEndpoints(endpoints =>
{
    endpoints.MapHub<SomeHub>("/path");
});

.UseSignalR()從 .NET Core 3.0 版開始已過時,建議從 .NET Core 3.1 版開始移至.UseEndpoints()

可以找到更多信息AspNet Core 兼容性

Microsoft.AspNetCore.SignalR自 2.1 起成為 ASP.NET Core 的一部分。

因此,如果您在 Visual Studio 的 Project->Properties->Target framework 下將目標版本設置為 NET Core 2.1 或更高版本,您應該可以在ConfigureServices方法中調用services.AddSignalR()

點網5.0

先添加包:

dotnet add package Microsoft.AspNet.SignalR.Core --version 2.4.1

在,public void ConfigureServices(IServiceCollection services)

services.AddSignalR();

在,public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

app.UseEndpoints(endpoints =>
        {
            endpoints.MapHub<NotifyHub>("/notify");
        });

我在項目依賴項中發現了對舊 Mvc nuget 的引用,即使每個項目都有 .net6.0 配置(由錯誤的 .net 更新引起),它也會導致其余項目加載舊的 .net 核心包。 能夠在不添加任何包( signalR 包含在 netcore 中)的情況下添加Microsoft.AspNet.SignalR.Core引用的解決方案是刪除 Mvc nuget 引用並在 csproj 中包含下一個引用。

<ItemGroup>
   <FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM