Постараюсь коротко рассказать:
Я хочу вызвать метод в концентраторе в веб-приложении из основной сборки в моем приложении. Причина в том, что у меня есть ряд приложений, которые в конечном итоге вызывают основные и инициирующие события (например, мобильный Интернет, сайт администратора, API и т. д.). Я хочу уведомлять пользователей настольного сайта о событиях по мере их возникновения с помощью SignalR.
Чтобы увеличить это, я создал решение с 4 проектами. Основной проект с прокси-сервером. Веб-приложение с концентратором. Еще одно веб-приложение без хаба. И, наконец, консольное приложение.
Если я вызову ядро из консольного приложения и попытаюсь отправить сообщение клиентам-концентраторам с помощью прокси-сервера, все будет отлично работать. Однако, если я попытаюсь вызвать ядро и использовать прокси из одного из веб-приложений, выполнение зависнет при вызове connection.Start():
var connection = new HubConnection("...");
var hub = connection.CreateProxy("Spike.Hub");
connection.Start().Wait();
Разве SignalR.Client не предназначен для использования из домена приложения веб-приложения? Почему в консольном приложении это работает, а в веб-приложении — нет?
Обновление: я подключил свой шип к источнику SignalR, и при запуске из одного из веб-приложений выполнение зависает в строке 130 SignalR.Client.Connection. _syncContext для такого соединения является экземпляром AspNetSynchronizationContext, и при вызове его метода Post() все останавливается.