Совместимость версии SignalR (StatusCode: 405 "Метод не разрешен")

У меня проблемы с проектом SignalR, над которым я сейчас работаю. Я пытаюсь построить сервер с использованием.Net Core, а клиент - с использованием традиционного.Net (framework 4.6.1). Однако сервер и клиент не совместимы.

Последняя проблема, с которой я столкнулся, это StatusCode: 405, ReasonPhrase: "Метод не разрешен". Я нашел ответ на GitHub, в котором говорится, что между версиями есть много критических изменений.

Глядя на доступные версии пакета NuGet, я запутался еще больше. для сервера.Net Core я использую 1.0.0-preview1-final. Также имеется 1.0.0-alpha2-final, но я понятия не имею, является ли "alpha" более новой или более старой, чем "Preview".

На стороне клиента я использовал версию 2.2.2, и на выбор был целый ряд версий, я пробовал самую старую и последнюю, но обе версии дают мне одну и ту же ошибку "метод не разрешен".

Ошибка на стороне клиента, на стороне сервера, мои точки останова даже не достигнуты, так что это может быть и проблема с Owin/iis.

Есть ли какая-нибудь диаграмма, которая может сопоставить клиентов SignalR и совместимость версий сервера? Я думаю, это был бы большой шаг вперед.

2 ответа

Решение

Вы не можете смешивать.NET Core 1.x со старым клиентом (1.x или 2.x). Вам нужно будет решить, какой вариант лучше для вас, но вам нужно внедрить одну и ту же совместимую версию для КЛИЕНТА и СЕРВЕРА.

Проверьте ссылку для более подробной информации, но по существу:

Что изменилось?

Мы добавили в SignalR ряд новых функций для ASP.NET Core, но также решили отменить поддержку некоторых существующих функций или изменить их работу. Одним из последствий этого является то, что SignalR для ASP.NET Core не совместим с предыдущими версиями SignalR. Это означает, что вы не можете использовать старый сервер с новыми клиентами или старые клиенты с новым сервером.

Убедитесь, что службы внедрены, возможно, некоторые из них еще не внедрены в контейнер службы.

При добавлении службы signalR вы можете включить подробные ошибки, чтобы знать, что происходит.

          builder.Services.AddSignalR(o=> 
    {
        o.EnableDetailedErrors = true;
    });
Другие вопросы по тегам