Ich möchte Benutzerinformationen für die Lebensdauer einer SignalR-Anfrage statisch speichern. Ich habe dies in WebAPI mit HttpContext.Current.Items gemacht, aber das existiert nicht in SignalR.
Ich weiß, dass ThreadStatic nicht funktioniert, weil ein SignalR-Thread zwischen mehreren Anfragen geteilt werden kann.
Als Referenz hosiere ich es in IIS und verwende die neueste Version von SignalR (2.2.0)
Dies ist sicherlich sehr spät für die Beantwortung dieser Frage und vielleicht haben Sie bereits etwas dafür herausgefunden. Dies ist nur ein Versuch, meine Gedanken zu diesem Problem zu teilen.
Sie können also zunächst die Authentifizierung für SignalR aktivieren und dann Context.User.xxx
in Ihren Hub-Methoden verwenden.
Zum Aktivieren der Authentifizierung für alle Hubs können Sie Folgendes tun:
%Vor% Sobald Sie dies getan haben, können Sie Ihre Authentifizierungs-Pipeline weiterhin verwenden, um Ihre Anfragen zu authentifizieren, und diese Informationen werden den Hub
-Methoden über Context.User
property bereitgestellt. Im Folgenden finden Sie ein Beispiel von hier .
Damit können Sie Daten pro Benutzer in einem Speicher außerhalb des Arbeitsspeichers verwalten (damit er skaliert werden kann), z. B. in Redis-Cache oder ähnlichem.
Alternativ können Sie auch HubPipelineModule , und erstellen Sie einen benutzerdefinierten um eine genauere Kontrolle über Ereignisse zu haben.
%Vor%Hoffe, das hilft. Es wäre auch interessant zu wissen, wie Sie mit dem Problem umgegangen sind.
Tags und Links .net signalr signalr-hub