SignalR版本兼容性 (状态码:405“方法不允许”)

16
我正在处理一个SignalR项目,但遇到了问题。我试图使用.Net Core构建服务器,使用传统的.Net(框架4.6.1)构建客户端。然而,服务器和客户端似乎不兼容。
我遇到的最后一个问题是StatusCode:405,ReasonPhrase:“Method Not Allowed”。我在GitHub上找到了一个答案,指出版本之间存在许多破坏性变化。
查看可用的NuGet包版本时,我更加困惑。对于.Net Core服务器,我使用的是1.0.0-preview1-final。还有一个1.0.0-alpha2-final可用,但我不知道“alpha”是新还是旧。
在客户端上,我使用的是版本2.2.2,有一整套版本可供选择,我尝试了最旧和最新的版本,但两个版本都给我同样的“方法不允许”错误。
错误出现在客户端上,在服务器端,我的断点甚至没有被触发,所以这也可能是Owin / iis问题。
是否有任何图表可以映射SignalR客户端和服务器版本的兼容性?我想这将是迈向前进的重要一步。
2个回答

12

你不能将.NET Core 1.x与旧版本客户端(1.x或2.x)混合使用。你需要决定哪个是最好的选择,但你需要在客户端和服务器上实现相同的兼容版本。

查看链接以获取更多详细信息,但基本上:

有何变化?

我们为ASP.NET Core添加了许多新功能,但我们还决定删除对一些现有功能的支持或更改它们的工作方式。这其中的一个后果是SignalR for ASP.NET Core与之前的SignalR版本不兼容。 这意味着您不能使用旧服务器与新客户端或旧客户端与新服务器。


1
那份文件没有说明哪些版本是兼容的。最新的NPM包(https://www.npmjs.com/package/@aspnet/signalr-client)显示“1.0.0-alpha2-final是2个版本中最新的”,该版本已发布5个月,而aspnetcore版本(https://www.nuget.org/packages/Microsoft.AspNetCore.SignalR/)是“1.0.0-preview1-final”,该版本于**9天前**发布。 - Steve Dunn
2
我认为他们的GitHub页面(https://github.com/aspnet/SignalR)在“包”下面澄清了这一点:注意:JavaScript的SignalR客户端库的先前预览名称为@aspnet/signalr-client。自Preview 1以来,此已被弃用。 - Frank M
1
啊!我在开始之前应该先问一下...谢谢。 - Louis Somers
1
为什么他们不把 .Net Core 版本命名为 3.0,而是重新从 1.0 开始。我还是感到失望。这意味着我们不能利用 .Net Core 来创建新服务,因为我们现有的应用程序(将成为客户端)不是 .Net Core 应用程序。是否有人正在进行移植,或者我必须明确选择放弃 SignalR 或 .Net Core 用于新服务? - Louis Somers
1
命名约定/方案/或者你想叫它什么,这个星期真的让我困扰了。我浪费了两天时间来追踪一个随机错误;最后发现问题出在版本不匹配上。简直是 Microsoft 的恶劣行为。 - Robert Perry
显示剩余2条评论

0

检查服务是否被注入,可能有些服务尚未在服务容器中注入。

添加 SignalR 服务时,您可以启用详细错误以了解发生了什么。

    builder.Services.AddSignalR(o=> 
    {
        o.EnableDetailedErrors = true;
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接