SignalR ne fonctionne pas sur le site Web mais fonctionne sur une application Web

J’ai suivi ce tutoriel simple et j’ai réussi à créer une application Web de test avec signalR. Mais lorsque j’ai essayé de le recréer à l’aide du site Web ASP.NET, puis que j’ai recherché la page html, j’ai eu l’erreur suivante:

TypeError: $.connection is undefined var chat = $.connection.chatHub; 

Voici la structure de mon projet si cela compte:

entrez la description de l'image ici

Sur la base de ce que j’ai trouvé, il est nécessaire de définir runAllManagedModulesForAllRequests sur true dans web.config. Je l’ai donc déjà fait. De plus, le tutoriel que j’ai suivi est un peu obsolète, car j’utilise VS 2010 (c’est-à-dire .NET Framework 4), qui est uniquement compatible avec SignalR v 1.1.3.

Pourquoi est-ce que je ne peux pas obtenir cela fonctionne dans un site Web mais fonctionne parfaitement dans une application Web?

Mettre à jour:

Une solution (que je crois avoir raison) suggère de

Placer mon code derrière le fichier dans un fichier .cs séparé et le placer dans le dossier App_Code

Alors j’ai essayé de changer mon fichier html dans un fichier .aspx. De cette façon, j’ai un code derrière le fichier (c’est-à-dire .aspx.cs), mais je ne comprends pas ce qu’il est censé faire pour déplacer le code derrière le fichier car imbriquer mon fichier .aspx dans un fichier .aspx.cs résidant dans le dossier App_Code n’est pas permis.

Que signifie la réponse citée ci-dessus?

Mettre à jour:

Voici mes références de script dans HTMLPage.htm ainsi que la fonction principale.

         $(function () { // Declare a proxy to reference the hub. var chat = $.connection.chatHub; // Create a function that the hub can call to broadcast messages. chat.client.broadcastMessage = function (name, message) { // Html encode display name and message. var encodedName = $('
').text(name).html(); var encodedMsg = $('
').text(message).html(); // Add the message to the page. $('#discussion').append('
  • ' + encodedName + ':  ' + encodedMsg + '
  • '); }; // Get the user name and store it to prepend to messages. $('#displayname').val(prompt('Enter your name:', '')); // Set initial focus to message input box. $('#message').focus(); // Start the connection. $.connection.hub.start().done(function () { $('#sendmessage').click(function () { // Call the Send method on the hub. chat.server.send($('#displayname').val(), $('#message').val()); // Clear text box and reset focus for next comment. $('#message').val('').focus(); }); }); });

    Vous devriez toujours vérifier la console lorsque quelque chose ne fonctionne pas – dans votre cas, la page ne trouve tout simplement pas les références au script SignalR et à / signalr / hubs (et cela est indiqué dans la console). Si vous modifiez les URL en “/WebSite18/Scripts/jquery.signalR-1.1.3.js” et “/ Website18 / signalr / hubs”, cela fonctionnera.