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



我目前正在处理的 SignalR 项目遇到问题。我正在尝试使用.Net Core构建服务器,并使用传统.Net(框架4.6.1)构建客户端。但是,服务器和客户端似乎不兼容。

我遇到的最后一个问题是状态代码:405,原因短语:"方法不允许"。我在 GitHub 上找到了一个答案,指出版本之间存在许多重大更改。

查看可用的 NuGet 包版本,我变得更加困惑。 对于 .Net Core 服务器,我使用的是 1.0.0-preview1-final。还有一个 1.0.0-alpha2-final 可用,但我不知道"alpha"是比"预览"更新还是旧。

在客户端,我使用的是 2.2.2 版,并且有多种版本可供选择,我尝试了最旧和最新的版本,但两个版本都给了我相同的"方法不允许"错误。

错误在客户端,在服务器端,我的断点甚至没有命中,所以也可能是 Owin/iis 问题。

是否有任何图表可以映射 SignalR 客户端和服务器版本兼容性?我想这将是向前迈出的一大步。

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

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

有什么变化?

我们为 ASP.NET 核心向 SignalR 添加了许多新功能,但我们 还决定删除对某些现有功能的支持或 改变它们的工作方式。这样做的后果之一是 SignalR ASP.NET 核心与以前版本的 SignalR 不兼容。 这意味着不能将旧服务器与新客户端一起使用,也不能将旧客户端与新服务器一起使用。

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

添加 signalR 服务时,可以启用详细错误以了解正在发生的情况。

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

最新更新