【问题标题】:SignalR cannot be used with .Net CoreSignalR 不能与 .Net Core 一起使用
【发布时间】:2017-08-01 12:16:35
【问题描述】:

我尝试在我的 C# Asp.Net core 项目中使用 NuGet 包管理器安装 SignalR,但我收到 SignalR 与 .net 核心不兼容的错误,真的还不支持吗?或者我可以做些什么来让它工作吗? (如果提到这一点很重要,我正在使用 VS2017)。错误:

Restoring packages for D:\Test\Test.WebAPI\Test.WebAPI.csproj...
Package Microsoft.AspNet.SignalR.Core 2.2.1 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.AspNet.SignalR.Core 2.2.1 supports: net45 (.NETFramework,Version=v4.5)
Package Owin 1.0.0 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Owin 1.0.0 supports: net40 (.NETFramework,Version=v4.0)
Package Microsoft.Owin 2.1.0 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Owin 2.1.0 supports:
  - net40 (.NETFramework,Version=v4.0)
  - net45 (.NETFramework,Version=v4.5)
Package Microsoft.Owin.Security 2.1.0 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.Owin.Security 2.1.0 supports: net45 (.NETFramework,Version=v4.5)
One or more packages are incompatible with .NETCoreApp,Version=v1.1.
Package restore failed. Rolling back package changes for 'Test.WebAPI'.

更新:

SignalR for ASP.Net Core 目前 (01.01.2018) 在 NuGet 中作为 alpha 版本提供。

https://www.nuget.org/packages/Microsoft.AspNetCore.SignalR/

UDPATE 01.06.2018:

SignalR 现在可用于 ASP.Net Core 2.1

【问题讨论】:

  • SignalR 还不是 ASP.Net Core 的一部分,但它在路线图上。
  • 我猜你可以试试测试版。
  • 我相信 @MohammedNoureldin Web Sockets 已经在 .NET Core 中了。但不是 SignalR。因此,如果您想要 Web 套接字,则需要推出自己的实现。或者现在只使用 .NET Framework。
  • 您知道source 可用吗?您理论上可以下载它并查看它的状态,甚至开始使用它。当然,出于生产目的,我不会相信它。
  • Microsoft Build 2017 的最新版本(2017 年 5 月 12 日左右):用于 .NET Core 的 SignalR 仍在开发中,目标是 2017 年第三季度左右的预览版,并在 2017 年第四季度左右发布。Github 网站是 github.com/aspnet/SignalR 和 Build演示文稿位于channel9.msdn.com/Events/Build/2017/B8078,您还可以从中看到幻灯片

标签: asp.net asp.net-core signalr .net-core


【解决方案1】:

SignalR 2 是为 .NET Framework 构建的,而不是为 .NET Core 构建的。他们仍在为 .NET Core 开发 SignalR。

ASP.NET Core 路线图的old revision 显示 SignalR 作为 ASP.NET Core 1.2 的一部分。 latest revision 没有提及 SignalR(或任何框架),但确实提到 1.2 计划于 2017 年第二季度发布。

a video,微软人员正在讨论 ASP.NET Core 中的 SignalR。时长一个小时,所以我不会为你看。但也许里面有一些有用的信息。

【讨论】:

  • 你有任何关于 SignalR for ASP.Net Core 的更新吗?我google了一下,没有明显的结果。
  • 你看过他们的 GitHub 页面了吗? github.com/aspnet/SignalR/blob/dev/README.md
  • 是的,但我不确定它是正式发布还是仍处于开发阶段。
  • 它是开源软件。它总是在发展中。如果您对是否有稳定版本感到好奇,我不知道。如果我要尝试找出答案,我可以像你一样谷歌搜索。或者我可以在他们的 GitHub 存储库上打开一个问题并询问计划是什么。
  • @MohammedNoureldin 现在有一个 Alpha 2 版本。我现在用的。它工作正常
【解决方案2】:

我目前正在使用 signalr 开发一个 .net core / angular 4 项目。

谷歌上有一些种子示例,但可能会让大多数人尝试通过 nuget 下载 signalr 的一件事是它是一个不同的包 repo - 您需要在解决方案中更新 Nuget.config 以供参考更前沿的回购:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="AspNetCore" value="https://dotnet.myget.org/F/aspnetcore-ci-dev/api/v3/index.json" />
    <add key="NuGet" value="https://api.nuget.org/v3/index.json" />
  </packageSources>
</configuration>

【讨论】:

  • .net core 的名称是什么?
  • 看起来 1.0.0(预览版 3)仅适用于 netstandard 2.0:Installing Microsoft.AspNetCore.SignalR 1.0.0-preview3-25758. Package Microsoft.AspNetCore.SignalR 1.0.0-preview3-25758 is not compatible with netcoreapp1.1 (.NETCoreApp,Version=v1.1). Package Microsoft.AspNetCore.SignalR 1.0.0-preview3-25758 supports: netstandard2.0 (.NETStandard,Version=v2.0)
  • @mikebridge 你最终找到支持 1.1 的合适版本了吗?
  • @FiringSquadWitness 我完全放弃了 SignalR,现在正在使用 websockets(通过 Microsoft.AspNetCore.WebSockets)和 Pusher。这在我的 React 前端非常有效。
【解决方案3】:

SignalR 用于 asp.net 核心

编辑: SignalR for asp.net core has been released with .net standard 2.1.

This package targets .net standard 2.0 and is still in the alpha state.

It doesn't seem like a stable release is out before .net standard 2.1.

这些包可以在myget找到。

如果您对信号器集线器进行负载平衡,则可以将 redis 用作背板。


用于 asp.net 的 SignalR

还有用于 .net 框架的 SignalR 包,它已经有一个稳定的版本。可以在nuget找到。

对于load balancing,支持以下背板类型:

  • Azure 服务总线
  • Redis
  • SQL 服务器

SignalR.Server 用于 asp.net 核心 (2017 年 9 月 18 日更新:不再可用)

不要使用这个包!

这是针对 .net 4.5.1 和 .net standard 1.6 的已弃用包。没有稳定的软件包已经发布,也永远不会发布。

预览包可以在myget找到。

如果您对信号器集线器进行负载平衡,则可以将 sql server 用作背板。 (但implementation is broken

【讨论】:

    【解决方案4】:

    没错。 SignalR 构建在 OWIN 之上,如果您以完整框架为目标,则它与 asp.net 核心兼容,但不兼容 dotnet 核心。

    【讨论】:

    • 知道怎么做吗?我似乎找不到此设置的任何示例
    【解决方案5】:

    我最近将一个使用 SignalR 的 MVC5 应用程序迁移到 ASP.NET Core 1.1 (netcoreapp1.1)。我找到了一个非官方的包 (Gray.Microsoft.AspNetCore.SignalR.Server),它几乎可以直接运行,而无需对我现有的代码进行任何更改。

    csproj 文件

    <PackageReference Include="Microsoft.AspNetCore.WebSockets" Version="1.0.2" />
    <PackageReference Include="Gray.Microsoft.AspNetCore.SignalR.Server" Version="0.2.0-alpha1" />
    

    启动 - ConfigureServices 方法

    services.AddSignalR();
    

    启动 - 配置方法

    app.UseWebSockets();
    app.UseSignalR();
    

    【讨论】:

    • 听起来很实用,我稍后会尝试。你对官方的 SignalR 核心有什么想法吗?稳定吗? netcoreapp1.1) which used SignalR 是什么意思?是官方开源的 SignalR 还是旧的?
    • 我迁移的 MVC5 应用程序使用了官​​方的 SignalR,在我开始迁移之前我没有意识到 SignalR 与 .NET Core 不兼容。幸运的是,那个 nuget 包救了我!这不是官方的(你可以通过包名来判断),但它确实有效。
    • 好吧,正常的老SingalR不兼容.Net core 1.1,我们还在等待SignalR core的稳定版本。到那时,我会试试你提到的那个包,谢谢。
    【解决方案6】:

    可以在 NuGet 上找到以下包。

    Microsoft.AspNetCore.SignalR 1.0.0-alpha1-final 用于在 Web 上提供实时双向通信的组件。

    Microsoft.AspNetCore.SignalR.Redis 1.0.0-alpha1-final Redis 用于 ASP.NET Core SignalR。

    现在支持 .NETSTandard,Version=v2.0 的包。 我在我的项目中使用了这些包。 Angular 4 + SignalR

    【讨论】:

      【解决方案7】:

      SignalR 是随 .NET Core 引入的 这是实现的链接 https://www.youtube.com/watch?v=1TrttIkbs6c

      【讨论】:

      • 欢迎来到 Stack Overflow!虽然链接是分享知识的好方法,但如果它们在未来被破坏,它们将无法真正回答问题。将回答问题的链接的基本内容添加到您的答案中。如果内容太复杂或太大而无法在此处放置,请描述所提出解决方案的总体思路。请记住始终保留指向原始解决方案网站的链接引用。见:How do I write a good answer?
      猜你喜欢
      • 1970-01-01
      • 2019-07-25
      • 2019-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-03
      • 1970-01-01
      • 2018-01-25
      相关资源
      最近更新 更多