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<MyHub>();
        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/, Читайте сейчас, чтобы увидеть, есть ли способ заставить его работать как локально, так и опубликовано.

Ответы на вопрос(2)

Ваш ответ на вопрос