ASP.NET 5 (Core): Как хранить объекты в кеше сеанса (ISession)?

Я пишу приложение ASP.NET 5 MVC 6 (Core). Теперь я подошел к точке, где мне нужно сохранить (установить и получить) объект в кеше сеанса (ISession).

Как вы знаете, Set -method ISession принимает byte-array а Get -method возвращает один.

В неосновном приложении я бы использовал BinaryFormatter для преобразования моего объекта. Но как я могу сделать это в основном приложении?

Ответ 1

Я бы ISession сериализацию объектов в JSON и использовал методы расширения в ISession чтобы сохранить их как string.

// Save
var key = "my-key";
var str = JsonConvert.SerializeObject(obj);
context.Session.SetString(key, str);

// Retrieve
var str = context.Session.GetString(key);
var obj = JsonConvert.DeserializeObject<MyType>(str);

Методы расширения ISession определены в пространстве имен Microsoft.AspNet(Core).Http.