Ich entwickle eine User-Tracking-Lösung mit SignalR als ein lustiges Projekt, um SignalR für ASP.NET MVC-Anwendungen zu lernen.
Momentan kann ich angemeldete Benutzer verfolgen und wie lange sie auf einer bestimmten Seite sind. Wenn sie auf eine andere Seite wechseln, verfolge ich das auch und der Timer, den SignalR aktualisiert, wird zurückgesetzt ... Viele andere Funktionen sind implementiert oder teilweise implementiert.
Das Problem, vor dem ich stehe, ist, wie man die vollständige URL Controller / Action / Parameter bekommt im SignalR Hub?
Wenn ich HttpContext.Current.Request.Url
verwende, ist die URL immer / signorer / connect .
HINWEIS:
%Vor%befindet sich in der Datei _Layout.cshtml.
UPDATE:
Ich habe versucht,
zu verwenden %Vor%Und der Standort wird korrekt übergeben, aber ich brauche ihn nicht später bei der Connect () - Aufgabe. Ist es möglich, dies zu tun?
UPDATE 2:
Dieser Ansatz funktioniert nicht
%Vor% als Connect()
wird vorher aufgerufen.
In meinem Hub habe ich mehrere Methoden, aber ich würde gerne einen Wert (in meinem Fall einen Ort) an die Connect()
übergeben, ist das möglich?
Update 3
Verwenden Sie QueryString, um Daten zu übergeben, bevor das Connect()
auftritt.
Das Übergeben von Daten wie Ihrem Standortwert an Connect () ist über einen querystring-Parameter möglich: SignalR: So senden Sie Daten an IConnected.Connect ()
Die Verwendung von query-string ist nicht sehr sicher, da ein Hacker JS-Code fälschen kann und Ihnen einen falschen Standort schicken kann, der die Logik, die Sie dahinter haben, bricht.
Sie können versuchen, dies von owin-environment-Variablen
zu bekommen var underlyingHttpContext =
Context.Request.Environment[typeof(HttpContextBase).FullName] as HttpContextBase;
Dann extrahieren, was Sie brauchen.
Es wird mit IIS funktionieren, für Nicht-IIS-Hosting suchen Sie nach anderen OWIN-Dateien Ссылка
Tags und Links asp.net signalr asp.net-mvc-4 signalr-hub