2017-03-08 1 views
0

i verwenden, um den .net Kern "Microsoft.AspNetCore.Session": "1.0.0" die Sitzung in meinem .net Kern Projekt zu verwenden und die Erweiterungsmethode Hexe verwendet auf MSDN erwähnt seine ähnlichen.net Kern Objekt Session ohne serialize

public static void Set<T>(this ISession session, string key, T value) 
     { 
      session.SetString(key, JsonConvert.SerializeObject(value)); 
     } 

In meinem

Controller
HttpContext.Session.Set<BLL.clsPolicy>("PolicyDATAAPI", policyObj); 

, wenn ich das Objekt Sitzung passieren diese die Serialisierung zu tun es die Probleme in meiner Objektklasse machen wie: private Variablen sind nicht serialize so,

eine Möglichkeit, Objektspeicher in Sitzung ohne Serialisierung zu speichern? ?

Antwort

1

Im Lieferumfang von .Net Core ist es nicht möglich, ein Objekt in einer Sitzung zu speichern, ohne es zu serialisieren. Wenn Sie Sitzungsunterstützung für einen Speicherobjektspeicher hinzufügen möchten, müssen Sie sie implementieren.

Um es zu implementieren, müssen Sie Ihre eigene Implementierung von ISession und ISessionStore implementieren und sie mit dem DI-Container registrieren. Dann müssten Sie ISession Erweiterungsmethoden hinzufügen, um eine Set-Methode zu unterstützen, die einen Schlüssel und ein Objekt als Parameter akzeptiert. Intern in Ihrer Implementierung von ISession können Sie ein Thread-sicheres Wörterbuch zum Speichern der Objekte verwenden.

Aber wieder, out of the Box, bietet .Net Core keine Unterstützung für die Speicherung nicht serialisierter Objekte im Speicher. Wenn Sie es wollen, müssten Sie es schreiben.