Сессивная переменная очищается до вызова контроллера

Bassie спросил: 03 февраля 2018 в 10:35 в: c#

Мне нужно постоянно обновлять переменную сеанса, когда пользователь использует приложение.

Я пробовал следующие подходы:

public class MyController : Controller
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var a = filterContext.HttpContext.Session["SPUsers"];
        if (filterContext.HttpContext.Session["SPUsers"] != null)
        {
            new Task(InitialiseUsers).Start();
        }
        base.OnActionExecuting(filterContext);
    }    protected override void Initialize(RequestContext requestContext)
    {
        var a = requestContext.HttpContext.Session["SPUsers"];
        if (requestContext.HttpContext.Session["SPUsers"] == null)
        {
            new Task(InitialiseUsers).Start();
        }
        base.Initialize(requestContext);
    }    private void InitialiseUsers()
    {
        var spClient = new SPClient(ConfigurationManager.AppSettings["ADVBaseUrl"]);
        Session["SPUsers"] = spClient.GetAllUsers();
    }
}

Где все мои другие контроллеры наследуются от MyController.

Я вижу, что методы OnActionExecuting и Initialize вызываются, когда я перехожу к а также что метод InitialiseUsers вызывается, когда переменная сеанса SPUsers null.

Проблема заключается в том, что это переменная сеанса всегда null.

Почему это?

Почему значение не обновляется в InitailiseUsers? Или это то, что значение очищается, достигнув других 2 методов?

Оцените любые рекомендации.

0 ответов