Ответ 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.