Erhalte die vollständige URL im SignalR-Hub

8

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?

%Vor%

Update 3

Verwenden Sie QueryString, um Daten zu übergeben, bevor das Connect() auftritt.

%Vor%     
Matija Grcic 02.11.2012, 10:39
quelle

3 Antworten

4

Das Übergeben von Daten wie Ihrem Standortwert an Connect () ist über einen querystring-Parameter möglich: SignalR: So senden Sie Daten an IConnected.Connect ()

    
Alexander Köplinger 02.11.2012, 19:15
quelle
1

Sie könnten es von Ihrem Client js-Aufruf an Ihren Hub als Parameter übergeben.

    
dove 02.11.2012 10:50
quelle
1

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 Ссылка

    
Alex 22.05.2017 10:19
quelle