.NET Core 2.1 Управление переменными сеанса - PullRequest
0 голосов
/ 16 октября 2019

Я новичок в ядре .Net и пытаюсь управлять и получать доступ к переменным сеанса вне класса контроллера.

Переменные сеанса установлены правильно, и я вижу их во время отладки, но этотеряется при каждом запросе. Пожалуйста, предложите мне решение или есть что-то, что я ошибся.

Спасибо,

Сатиш

Ниже приведен код

//Statup.cs : 
////Added the below two lines in the ConfigureServices() method
services.AddSession(options => {options.IdleTimeout = TimeSpan.FromMinutes(30);});            
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

////Added the below two lines in the Configure() method
app.UseSession();
Sessions.Configure(app.ApplicationServices.GetRequiredService<IHttpContextAccessor>());

//Session.cs : Static class to handle session variables
using Microsoft.AspNetCore.Http;
using System;

namespace Dsms.Website.Helper
{
    public static class Sessions
    {
       private static IHttpContextAccessor _httpContextAccessor;

        public static void Configure(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public static Guid UserId
        {
            get { return Guid.Parse(_httpContextAccessor.HttpContext.Session.GetString("UserId")); }
            set { _httpContextAccessor.HttpContext.Session.SetString("UserId", value.ToString()); }
        }
    }
}

//BaseController.cs: 
////Constructor
public BaseController(IApplicationSettings applicationSettings, IServiceClient serviceClient, ICacheProvider cacheProvider, IHttpContextAccessor httpContextAccessor)
{
    _applicationSettings = applicationSettings;
    _serviceClient = serviceClient;
    _cacheProvider = cacheProvider;
    _httpContextAccessor = httpContextAccessor;

    //===> On every request the session variable is null here and so it calls DB.
    if (string.IsNullOrEmpty(Sessions.UserId))
    {
        GetUserDetails();
    }
}

//// Method GetUserDetails()
 public List<UserModel> GetUserDetails()
{
    ////Get user details from DB 
    //.
    //.
    //.
    //// Assign value to the session variables obtained from DB
    Sessions.UserId = user.UserId;
}

1 Ответ

0 голосов
/ 24 октября 2019

В методе ConfigureServices класса Startup задайте options.CheckConsentNeeded = context => false;

Затем сеанс сохраняется в каждом запросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...