SignalR Verhandeln 404
Ich bin mit SignalR 2.0. Alles funktioniert gut, wenn Sie läuft lokal auf meinem VS 2012. Aber wenn ich die site publizieren, die auf IIS, bricht es. Die Website lädt aber eines der Skripte wird 404 not Found. Das Skript ist so etwas wie.
Dieser Pfad nicht existiert in der Tat. Der richtige Weg sollte sein:
https://example.com/private/signalr/verhandeln?xxx
Hinweis: der Teil in bold.
Innerhalb der WebSite (https://example.com/) habe ich eine andere Anwendung (https://example.com/private/). Dieser ist mit SignalR.
Dies scheint ein bug in SignalR, da die signalr/hubs-Pfad zugänglich ist, aus meiner privaten Website.
- Haben Sie das herausgefunden? Ich habe das gleiche Problem...
- Ich war in der Lage, es zu lösen für mich. Siehe meine Antwort-und überprüfen Sie, ob das funktioniert für Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem.
Hier ist die Dokumentation für die Konfiguration der /signalr URL.
Aber meine Lösung unterscheidet sich von den docs.
Anstelle der änderung der standard -
app.MapSignalR()
, änderte ich meine client-code zu verwenden/MyApp/signalr
. Hier ist der code, wo "MyApp" ist das virtuelle Verzeichnis meiner web-Anwendung.Habe ich versucht die andere Weise herum (wechseln Sie die MapSignalR der /signalr-Pfad), aber das hat nicht funktioniert und die Verhandlung war noch geleitet /MyApp/signalr/verhandeln.
Ich hatte das gleiche Problem, wenn Sie web site mit signalr ist nicht als root laufen Website. Unterhalb Lösung für mich gearbeitet. anstelle der Verwendung von
/signalr
verwenden../signalr
. es funktioniert mit jeder Website-Namen Ordner. keine hartcodierten Namen 'MyApp'var connection = $.hubConnection('../signalr', {useDefaultPath: false});
Hatte das gleiche Problem. Websites, ausgeführt als virtuelle Verzeichnisse von der root-site. Aus irgendeinem Grund voranstellen ../in ../signalr hat nicht funktioniert, aber ./signalr habe.
Mein Beispiel-code:
Wahrscheinlich haben Sie Hinzugefügt MapSignalR() in Ihrer Anwendung (https://example.com/private/).
Wenn Sie möchten, dass es auf die Wurzel, dann die Konfiguration auf Ihrer WebSite (https://example.com/)