SignalR client appelant la méthode à partir de l'extérieur du moyeu à l'aide de GlobalHost.ConnectionManager.GetHubContext ne fonctionne pas. Mais l'appel de l'intérieur le concentrateur n'

Je suis en train d'appeler un client méthode de dans un .net Web API contrôleur de l'action.

Puis-je faire cela?

Le seul post que je peux trouver qui se rapproche de ce que je cherche à faire est celui-ci:

SignalR + affichage d'un message à un Concentrateur par le biais d'une méthode d'action

Dans un message est envoyé à partir de l'intérieur d'un asp.net MVC action du contrôleur à l'aide de GlobalHost.ConnectionManager.GetHubContext.

Quand j'essaie qu'à l'intérieur de mon API Web action aucune erreur n'est renvoyée, mais la méthode "methodInJavascript" n'est jamais invoquée sur le côté client.

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

Lorsque j'ai mis un point d'arrêt à l'intérieur de cette action, je vois que le code est conclu et exécuté. Il ne se passe rien sur le javascript côté client si.

Pourquoi? Est Web API si différent sous le capot que cela ne fonctionne pas? Quelqu'un d'autre a essayé et eu du succès?

Quand je l'appelle la "methodInJavascript" de "dans" mon hub, il fonctionne parfaitement. Juste ne fonctionne pas lorsqu'il est appelé à partir de dans un .net Web API contrôleur de l'action.

Mise à JOUR:

Après des recherches sur cette question je n'ai pas de solution. Je ne peux que supposer qu'il y a quelque chose qui manque à partir d'exemples de ce genre Le serveur vers le client les messages ne passent pas par avec SignalR dans ASP.NET MVC 4 et ce l'appel de SignalR hub de WebAPI contrôleur de questions comme peut-être il y a une étape supplémentaire de configuration pour activer les appels à partir d'un HubContext ou quelque chose. Le code que j'ai posté ici, c'est comme celui qui apparaît dans ces exemples n'a pas été démontré à être défectueux en quelque sorte. Quelqu'un peut-il voir une faille dans le code? L'appel de html œuvres. Je fais beaucoup dans mes applications et jamais de problème. Je n'ai jamais vu un appel à partir de la HubContext dans une API contrôleur de travaux. Pas d'erreurs. Tout simplement pas de résultats sur le client.

RÉSOLU (type de):

Code ci-dessus fonctionne en effet comme est lors de la publication. Ne fonctionne pas dans Visual Studio, l'environnement de dev via localhost si. Pas d'erreur mais pas de résultat sur le client final. La publication du code comme c'est pour un serveur réel sur le web ne fonctionne en effet. Je n'ai jamais pensé qu'il y aurait une différence, je n'ai jamais essayé. Pensé que si ça ne marchait pas, localement, il ne fonctionnerait pas publié. C'est un travail en direct maintenant, mais je me demandais pourquoi ça ne marche pas via localhost dans l'environnement de dev. Ne peux pas le tester en local avec des points d'arrêt et de ces.

J'ai le sentiment que c'est que signalr répertoire virtuel. Quelque chose est différent lorsqu'il est exécuté localement vs publiés. Pas sûr de ce qu'mais je vois beaucoup de messages comme http://www.bitwisejourneys.com/signalr-hosting-in-iis-a-nasty-gotcha/. De la lecture pour voir si il y a un moyen de le faire travailler à la fois localement et publié.

  • Je ne suis vraiment pas comprendre cela. Je vois la documentation. Je vois des extraits de code en de nombreux endroits. Ils se ressemblent tous. Quelqu'un a fait cela? Quelqu'un a réellement vu à l'oeuvre?
  • ay-je fait cela, il ne fonctionne pas pour moi non plus. Je reçois le même comportement que l'OP
  • Avez-vous jamais aller au fond de tout cela?
  • votre remarque sur la VD résolu pour moi. J'ai remarqué que mes pages de référence /signalr/hubs ont été prise en localhost:1234/signalr/moyeux et le contenu généré a l'initialisation de chemin /signalr au lieu de /Monsiteweb/signalr. MAIS quand je tape localhost:1234/Monsiteweb/signalr/hubs du contenu généré par l'URL de connexion est /Monsiteweb/signalr. Lorsque vous utilisez VDs dans IISExpress il crée deux sites web - un / de et un dans /Monsiteweb, de sorte que le signalr semble fonctionner, mais je suppose que vous vous retrouvez avec deux distincts des moyeux. Assurez-vous que générés /signalr/hub fichier comprend VD dans l'URL de connexion.
InformationsquelleAutor Robert | 2013-12-13