En supposant que vous souhaitiez réellement voir index.html
(c'est-à-dire que votre question n'est pas "un index.html vide s'affiche à la place de ma page de chat chat.html"), alors il semble que lorsque vous entrez quelque chose dans la page de chat, cela ne s'affiche pas comme un chat dans les autres fenêtres du navigateur qui sont connectées au chat.
J'effectuerais quelques tests de base. Je vais supposer que
- ASP.NET est installé et configuré sur le serveur (si ce n'est pas le cas, voir la note de bas de page).
- Les bibliothèques SignalR sont déployées sur le serveur (
Microsoft.AspNet.SignalR.Core.dll
, Microsoft.AspNet.SignalR.Owin.dll
, Microsoft.AspNet.SignalR.SystemWeb.dll
et les autres).
J'effectuerais les tests suivants :
- Installer Violoniste ou utilisez l'onglet Réseau dans les outils de développement du navigateur (appuyez sur F12 dans votre navigateur).
- Parcourir jusqu'à
yourdomainnamehere.com/index.html
(ou le recharger si vous y êtes déjà)
- La trace du réseau devrait montrer un état 200 (ou peut-être 304) pour :
- Votre page
index.html
- Les fichiers javascript pour jQuery, jQuery.signalR sont téléchargés.
- Il devrait également indiquer, ce qui est essentiel, les connexions suivantes avec un statut de retour 200 :
signalr/hubs
-
signalr/negotiate
(avec une chaîne de requête)
- Et il doit montrer un lien permanent avec
-
signalr/connect
(avec une chaîne de requête)
Ainsi :
-
Si vous ne voyez pas le point 3.2 ci-dessus, vous savez que les fichiers javascript ne sont pas servis, vous devez donc déterminer pourquoi (sont-ils présents sur le serveur/le chemin est-il correct dans votre html).
-
Si vous voyez cela, mais pas 4.1 ci-dessus, il y a un problème avec le routage ASP.NET. Vérifiez que vous avez ceci comme première ligne dans votre Application_Start
:
protected void Application_Start(object sender, EventArgs e)
{
// Register the default hubs route: ~/signalr/hubs
RouteTable.Routes.MapHubs();
}
-
Si vous voyez cela, mais pas 4.2 ou 5.1, c'est qu'il y a un problème avec votre javascript qui empêche l'utilisation de la fonction $.connection.hub.start()
appelé.
Ok, ça marche, et maintenant ?
Vous devez maintenant activer journalisation côté client sur signalr . Dans votre page de chat index.html, à l'endroit où vous voyez l'élément $.connection.hub.start().done(function () {
ajouter ce qui suit pour que le code se lise comme suit :
$.connection.hub.logging = true;
$.connection.hub.start().done(function () {`
Ouvrez à nouveau les outils de développement du navigateur et passez à l'onglet console. Chargez maintenant la page et envoyez un chat. Voyez quels sont les messages d'erreur que vous obtenez, le cas échéant. L'ouverture réussie de la page et l'envoi d'un message de discussion devraient générer un journal tel que :
LOG: [12:34:56 UTC+0100] SignalR: Negotiating with '/signalr/negotiate'.
LOG: [12:34:56 UTC+0100] SignalR: This browser doesn't support SSE.
LOG: [12:34:56 UTC+0100] SignalR: Binding to iframe's readystatechange event.
LOG: [12:34:56 UTC+0100] SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332 and a connection lost timeout of 20000
LOG: [12:34:56 UTC+0100] SignalR: Triggering client hub event 'broadcastMessage' on hub 'ChatHub'.
Note de bas de page : Comment tester que ASP.NET est installé et configuré sur le serveur ?
Créez une nouvelle page à l'aide de votre site web signalr endpoint :
- en faire un formulaire web aspx (ou un formulaire mvc) et l'appeler
TestAspNet.aspx
.
- dans le fichier TestAspNet.aspx, ajoutez le contrôle d'étiquette
<asp:Label runat="server" ID="lblTest"></asp:Label>
- dans le code derrière, ajoutez ce code dans
Page_Load
: this.lblTest.Text = DateTime.Now.ToLongTimeString();
Déployez-le maintenant sur votre serveur web, et naviguez jusqu'à http://yourdomainnamehere.com/TestAspNet.aspx
. Si vous voyez l'heure actuelle du serveur, vous savez que ASP.NET est installé sur le serveur. Si ce n'est pas le cas, deux options s'offrent à vous :
Si vous pensez qu'un autre site utilise l'en-tête host, vous pouvez utiliser powershell pour le vérifier facilement sur Win Server 2102 :
Import-Module WebAdministration
Get-WebBinding |? bindingInformation -match .*mydomainname.com.* | ft protocol, bindingInformation, ItemXPath -AutoSize
Le nom et l'identifiant du site sont affichés dans la colonne des résultats. ItemXPath