SignalR aufrufende client die Methode von außerhalb hub mit GlobalHost.ConnectionManager.GetHubContext nicht funktioniert. Aber das aufrufen von innerhalb der Nabe nicht

Bin ich versucht, rufen Sie eine client-Methode aus einem .net-Web-API-controller Aktion.

Kann ich tun?

Die einzige post, die ich finden kann, kommt nah an, was ich Suche zu tun, ist dieses hier:

SignalR + Buchung eine Nachricht an einen Hub über eine action Methode

Dort wird eine Nachricht gesendet, der innerhalb einer asp.net MVC-controller-action mit GlobalHost.ConnectionManager.GetHubContext.

Wenn ich versuche, in meinem Web-API-Aktion keine Fehler geworfen werden, aber die Methode "methodInJavascript" wird nie aufgerufen auf der client-Seite.

    Public ActionResult MyControllerMethod()
    {
        var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
        context.Clients.All.methodInJavascript("hello world");
        //or
        context.Clients.Group("groupname").methodInJavascript("hello world");
    }

Wenn ich einen break-Punkt im inneren, der Aktion, sehe ich, dass der code wird erreicht und ausgeführt werden. Nichts geschieht über die javascript-client-Seite aber.

Warum? Ist ein Web-API, so anders unter der Haube, dass das nicht funktionieren? Hat noch jemand es ausprobiert und Erfolg gehabt?

Wenn ich die "methodInJavascript" aus "innerhalb von" mein hub, funktioniert es tadellos. Will einfach nicht funktionieren, wenn der Aufruf innerhalb einer .net-Web-API-controller Aktion.

UPDATE:

Nach der recherche zu diesem Problem habe ich keine Lösung. Ich kann nur annehmen, es ist etwas, das fehlen von Beispielen, wie dies Server-zu-client-Nachrichten nicht durch, mit SignalR in ASP.NET MVC 4 und diese Aufruf SignalR-hub von WebAPI controller Probleme wie vielleicht gibt es eine zusätzliche Konfiguration Schritt, damit das aufrufen von einem HubContext oder so etwas. Der code, den ich ursprünglich hier gepostet ist wie das, was erscheint in diesen Beispielen nicht nachgewiesen werden fehlerhaft in irgendeiner Weise. Kann jemand sehen, der Fehler im code? Der Aufruf aus einer html funktioniert. Ich Tue es ausgiebig in meine apps und nie Erfahrung ein Problem. Ich habe noch nie einen Anruf von der HubContext in einen API-controller arbeiten. Keine Fehler. Nur keine Ergebnisse auf dem client.

GELÖST (Art):

Obige Code funktioniert in der Tat wie wenn veröffentlicht. Funktioniert nicht in Visual Studio, dev-Umgebung über localhost aber. Kein Fehler, aber kein Ergebnis auf der client-Seite. Publishing der code ist auf einen richtigen server auf dem web funktioniert in der Tat. Ich hätte nie gedacht, es wäre ein Unterschied, so dass ich nie versucht. Dachte, wenn es nicht lokal arbeiten, es würde nicht funktionieren, veröffentlicht. Es funktioniert jetzt Leben, aber ich Frage mich, warum es nicht funktioniert über localhost in der dev-Umgebung. Kann nicht lokal testen mit Haltepunkten und solchen.

Habe ich das Gefühl, es ist, dass der signalr virtuelle Verzeichnis. Etwas ist anders, wenn lokal ausgeführt, vs veröffentlicht. Nicht sicher was, aber ich sehe viele posts wie http://www.bitwisejourneys.com/signalr-hosting-in-iis-a-nasty-gotcha/. Jetzt Lesen, um zu sehen, ob es gibt einen Weg, um es Arbeit sowohl lokal und veröffentlicht.

InformationsquelleAutor der Frage Robert | 2013-12-13

Schreibe einen Kommentar