在 .NET 4.6.1 上使用 SignalR Core

Using SignalR Core on .NET 4.6.1

SignalR differences documentation 中所述,我们可以在 .NET 4.6.1 及更高版本上使用 SignalR Core...

所以我知道两种情况的启动和配置代码:

SignalR 核心:

配置服务

//Add SignalR service
services.AddSignalR();

启动

app.UseSignalR(routes =>
{
    routes.MapHub<NotificationsHub>("/notification");
});

信号R:

启动

app.Map("/signalr", map =>
{
    map.UseCors(CorsOptions.AllowAll);
    var hubConfiguration = new HubConfiguration { };
    hubConfiguration.EnableDetailedErrors = true;
    map.RunSignalR(hubConfiguration);
});

我的问题是,我需要在 .NET 4.6.1 启动中做什么来映射我的 SignalR 集线器等等...? 我找不到有关此特定案例的任何文档。

更新1: 我尝试 运行 相同的代码,显然更改了客户端代码以使用 SignalR 核心方法,我现在得到的是(未授权)在协商请求期间。

经过一番研究后,我在 ASP.NET forum 上问了同样的问题,我得出的结果是 不可能 在任何 .NET Framework 项目上使用 SignalR Core。我们只能在 .NET Core 项目上使用它,它支持将框架定位到 .NET Framework 4.6.1 或更高版本,然后在支持的平台上编译和 运行 应用程序。

这里有更多详细信息: https://forums.asp.net/t/2160460.aspx

虽然 OP 已经回答了这个问题,但我认为为了其他可能偶然发现它的人的利益,有必要提供更完整的答案。

ASP.NET Core 版本 1 到 2.2 支持以 .NET Framework v4.6.1+ 为目标,以简化从 ASP.NET v4 到 ASP.NET Core 的过渡。此支持已在 ASP.NET Core v3.

中删除

虽然 SignalR 和 SignalR Core 都有针对 .NET Framework v4.6.1+ 的 nuget 包,但它们具有不同的依赖项。由于 SignalR nuget 包之一被称为 Microsoft.AspNet.SignalR.Core.

,这变得更加混乱

总而言之,SignalR 核心构建于 ASP.NET 核心之上。没有它,您将无法使用 SignalR Core。如果您想在仍以 .NET Framework v4.6.1-v4.8 为目标的同时使用 SignalR Core,您只能通过创建 ASP.NET Core v1-v2.2 项目然后将其目标框架更改为 .v4.6.1 来实现-v4.8.

在撰写本文时,对于 ASP.NET v4 应用程序,最新支持的 SignalR 版本是 v2.4.3。