SignalR, вызывающий клиентский метод извне хаба с использованием GlobalHost.ConnectionManager.GetHubContext, не работает. Но звонить изнутри
я пытаюсь вызвать клиентский метод из действия контроллера .net Web API.
Я могу это сделать?
Единственный пост, который я могу найти, который приближается к тому, что я собираюсь сделать, это этот:
SignalR + отправка сообщения в Hub с помощью метода действия
Там сообщение отправляется изнутри действия контроллера MVC asp.net с использованием GlobalHost.ConnectionManager.GetHubContext.
Когда я пытаюсь сделать это в своем действии Web API, ошибки не выдаются, но методmethodInJavascript» никогда не вызывается на стороне клиента.
Public ActionResult MyControllerMethod()
{
var context = GlobalHost.ConnectionManager.GetHubContext();
context.Clients.All.methodInJavascript("hello world");
// or
context.Clients.Group("groupname").methodInJavascript("hello world");
}
Когда я устанавливаю точку останова внутри этого действия, я вижу, что код достигается и выполняется. Ничего не происходит на стороне клиента JavaScript, хотя.
Зачем? Является ли веб-API настолько отличным, что это победило?т работаешь? Кто-нибудь еще пробовал это и имел успех?
Когда я называюmethodInJavascript» от "в" мой хаб, работает отлично. Только что выигралне работает при вызове из действия контроллера .net Web API.
ОБНОВИТЬ:
После исследования этой проблемы у меня нет решения. Я могу только предположить, что чего-то не хватает в подобных примерахСообщения от сервера к клиенту, не проходящие через SignalR в ASP.NET MVC 4 и этовызов концентратора SignalR из-за проблем с контроллером WebAPI например, может быть, есть дополнительный шаг настройки для включения вызова из HubContext или чего-то еще. Код, который я первоначально разместил здесь, похож на тот, который показан в этих примерах, и не продемонстрировал никаких недостатков. Кто-нибудь может увидеть недостаток в коде? Звонок из html работает. Я активно использую это в своих приложениях и никогда не сталкиваюсь с проблемой. Я никогда не видел вызов от HubContext в работе контроллера API. Нет ошибок Просто нет результатов на клиенте.
Решено (вид):
Код выше действительно работает как естькогда опубликовано, Не работает в среде разработки Visual Studio через localhost, хотя. Нет ошибок, но нет результата на стороне клиента. Публикация кода на реальном сервере в сети действительно работает. Я никогда не думал тамбудет разница, поэтому я никогда не пытался. Понял, если бы нене будет работать на месте, это не будетРабота опубликована. Это'сейчас живу, а ямне интересно, почему это не такработать через localhost в среде разработчика. Можно'локально проверить с точками останова и тому подобное.
Я чувствую этоЭто виртуальный каталог сигнализатора. Что-то другое, когда запускается локально против опубликованных. Не уверен, что, но я вижу много сообщений, какhttp://www.bitwisejourneys.com/signalr-hosting-in-iis-a-nasty-gotcha/, Читая сейчас, чтобы увидеть, есть лиспособ заставить это работать и локально и издано.