Использование Сеанса В Asp.Net 5,0

#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));
}