#c# #asp.net
Вопрос:
Я хочу использовать сеанс в Asp.Net 5.0 Обычно я использую
HttpContext.Session.GetInt32()
или
HttpContext.Session.GetString()
Но теперь я хочу передать объект в сеанс, и я не могу найти никакого метода для этой потребности В предыдущей версии Asp.Net можно использовать Session["name"] = object
, но я могу использовать это для Asp.Net 5,0
Как передать Объект Переменной Сеанса в Asp.Net 5,0
Ответ №1:
ISession
API предназначены для масштабирования. Возможно, вам потребуется получить доступ к одному и тому же сеансу с нескольких веб-серверов или при перезапуске.
Основной API основан на хранении массивов байтов. Вам решать, что представляют собой эти байты.
С помощью нескольких методов расширения вы можете хранить объекты данных в формате UTF8 json;
public static async Task<T> Get<T>(this ISession session, string key)
{
await session.LoadAsync();
var bytes = session.Get(key);
if (bytes == null)
return defau<
return JsonSerializer.Deserialize<T>(bytes);
}
public static async Task Set<T>(this ISession session, string key, T value)
{
await session.LoadAsync();
if (EqualityComparer<T>.Default.Equals(value, default(T)))
session.Remove(key);
else
session.Set(key, JsonSerializer.SerializeToUtf8Bytes(value));
}