Я новичок в ядре .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;
}