SignalR - Impossible d'obtenir la propriété "client" undefined ou référence null

Je vais avoir des problèmes à l'aide de SignalR dans une Application Web existante. Je suis la réception de la javaruntime exception "Impossible d'obtenir la propriété "client" undefined ou référence null" parce que quand j'essaie de récupérer mon hub de l' $.objet de connexion, c'est de retourner la valeur null.

Avant que je poste mon code, j'ai voulu fournir le contexte et certaines choses que j'ai déjà essayé:
- Si je lance le projet en local, tout fonctionne bien. C'est seulement lorsque je déploie mon projet pour l'IIS de l'emplacement que j'ai des problèmes.
- J'ai vérifié mon hub nom est correctement camelcase. Encore une fois, il fonctionne très bien en local, et ne lance que l'erreur après j'ai déployé le projet de IIS.
- J'ai confirmé que tous mes javascript a été chargé avec succès. La bibliothèque JQuery est seulement référencés, et les charges de l'amende. Le fait de la signalR javascript, et le créé dynamiquement signalr/hubs.
- Si je crée un nouveau projet, et d'exécuter le même code que une nouvelle application web qui s'exécute comme une application web, en vertu de l'application web existante, tout fonctionne très bien (même code est utilisé, juste dans un nouveau projet).

Quelqu'un a des idées sur ce qui est le problème?

Code Hub:

Imports Microsoft.AspNet.SignalR

Public Class TestHub
    Inherits Hub

    Public Sub Connect()
        Try
            Clients.Caller.onConnect(Context.ConnectionId)
        Catch ex As Exception
            LogMessage("ERROR Connecting to Hub", 0, 0, "ERROR")
        End Try
    End Sub

End Class

Code De La Page Web:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.4.min.js"></script>
    <!--Reference the SignalR library. -->
    <script src="Scripts/jquery.signalR-1.1.3.js"></script>
    <!--Reference the autogenerated SignalR hub script. -->
    <script src="signalr/hubs"></script>
    <script type="text/javascript">
        $(function () {
            //Declare a proxy to reference the hub. 
            var thub = $.connection.testHub;

            registerClientMethods(thub);

            //Start Hub
            $.connection.hub.start().done(function () {
                registerEvents(thub);
                thub.server.connect();
                alert('connected!');
            });
        });


        function registerClientMethods(thub) {
            thub.client.onConnect = function (id) {
                $('#lblConnectionID').text(id);
            }
        }

        function registerEvents() {

        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblConnectionID" runat="server" />
    </div>
    </form>
</body>
</html>

Mondiale.asax Code:

Imports System.Web.Routing
Imports Microsoft.AspNet.SignalR

Public Class Global_asax
  Inherits System.Web.HttpApplication
    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    ' Fires when the application is started
    Try
    ' Register the default hubs route: ~/signalr/hubs
    RouteTable.Routes.MapHubs()
    Catch ex As Exception
    LogMessage("ERROR initializing SignalR: " & ex.Message, 0, 0, "ERROR")
    End Try
End Sub
...

Alors maintenant, quand je vais sur ma page SignalRTest.aspx, la ligne bain.client.onConnected = ... jette un javascript erreur: "Impossible d'obtenir la propriété "client" undefined ou référence null"

Personne ne sait ce qui pourrait en être la cause?
Merci.

[EDIT] - Après la comparaison du travail signalr/hubs.js fichier avec le non-fichier de travail, j'ai trouvé le morceau suivant manquant:

proxies.testHub= this.createHubProxy('testHub'); 
    proxies.testHub.client = { };
    proxies.testHub.server = {
        connect: function () {
            return proxies.transactionHub.invoke.apply(proxies.testHub, $.merge(["Connect"], $.makeArray(arguments)));
         }
    };

Des idées sur pourquoi ce ne serait pas inclus dans les signalr/hubs.js fichier? Je suis l'appel de la MapHubs ().asax...

Merci!

[FIX]
J'ai supprimé le dossier Bin de mon application web de destination, et redéployés. Toujours pas sûr de ce qui est différent. Tous les .Les dll sont les mêmes. Maintenant cela fonctionne bien. Impair.

C'est difficile, vous pouvez élaborer sur le contraste entre la configuration qui fonctionne sur IIS et celui qui ne l'est pas. Vous l'avez dit, "comme une nouvelle application web qui s'exécute comme une application web, en vertu de l'application web existante, tout fonctionne bien". Comment est-ce différent de la configuration de IIS qui signalR échoue?
Bien sûr, je peux essayer... Dans IIS, j'ai une Application Web appelée "MyWebApplication". C'est un vaste et complexe, Application Web qui a été autour pendant un certain temps. Je reçois à ma page de test en allant sur mycompany.com/mytest/signalrtest.aspx. Pour une raison quelconque, mon hub procuration n'est pas créé dans ce projet. Si je créer un nouveau projet Visual Studio, et de l'appeler mytest2 qui contient uniquement les signalr code (hub et le client de la page), je déployer le projet comme une application sous ma principale de l'application dans IIS (alors maintenant je vais sur mycompany.com/mytest/mychildtest/signalrtest.aspx). Maintenant, mon hub proxy génère ok
Peut-être "MyWebApplication" a certains paramètres de sécurité qui ont verrouillé quelques de la ASP.NET les bibliothèques de Signalr nécessite pour fonctionner correctement. Avez-vous de la journalisation de l'application tels que la Elmah ou une Entreprise de la Bibliothèque? Avez-vous vérifié le Journal des Événements Application Windows juste au cas où?
L'erreur est un code javascript. Cependant SignalR crée le hub proxy ne semble pas fonctionner dans mon cas. J'aimerais en savoir plus sur pourquoi. Près que je peux dire c'est le RouteTable.Les itinéraires.MapHubs() dans le monde.asax qui crée le proxy, et qui s'exécute sans erreur. Comment puis-je vérifier le SignalR hub proxy est créé au-delà en essayant de le faire en javascript?
Pourrait être intéressant exécuter Fiddler sur la demande vers le serveur web distant pour voir si il y a un script à des erreurs de chargement. Qui pourrait l'aider à affiner la recherche.

OriginalL'auteur user2676522 | 2013-08-12