为了账号安全,请及时绑定邮箱和手机立即绑定

.Net Core SignalR 无法在启动时添加或使用

.Net Core SignalR 无法在启动时添加或使用

C#
繁花如伊 2023-09-16 15:00:33
我最近又回到了一个使用 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我已经尝试过,但错误仍然存在,我该如何消除这些错误?
查看完整描述

5 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

我通过替换代码解决了这个问题

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

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

我使用的是点网5.0


查看完整回答
反对 回复 2023-09-16
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

解决方案是使用.UseEndpoints(). 正如 MSFT 所记录的,这是推荐的方法,将.UseSignalR(),

推荐方法:

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

从 .NET Core 版本 3.0 开始,它.UseSignalR()已过时,建议开始.UseEndpoints()使用 .NET Core 版本 3.1。

查看完整回答
反对 回复 2023-09-16
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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

因此,如果您在 Visual Studio 中的“项目”->“属性”->“目标框架”下将目标版本设置为 NET Core 2.1 或更高版本,则应该能够调用您的services.AddSignalR()方法ConfigureServices


查看完整回答
反对 回复 2023-09-16
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

点网5.0

先添加包:

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

中,public voidConfigureServices(IServiceCollection services)

services.AddSignalR();

在,公共无效配置(IApplicationBuilder应用程序,IWebHostEnvironment env)

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


查看完整回答
反对 回复 2023-09-16
?
绝地无双

TA贡献1946条经验 获得超4个赞

我在项目依赖项中发现了对旧 Mvc nuget 的引用,这导致其余项目加载旧的 .net core 包,即使每个项目都有 .net6.0 配置(由错误的 .net 更新引起)。能够添加Microsoft.AspNet.SignalR.Core引用而不添加任何包(signalR 包含在 netcore 中)的解决方案是删除 Mvc nuget 引用并在 csproj 中包含下一个引用。

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


查看完整回答
反对 回复 2023-09-16
  • 5 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信