Сеанс очищается в ASP.NET MVC

Что происходит с Session между вызовом Session_Start и OnActionExecuting в ActionFilterAttribute.

Почему-то, когда я установил что-то вроде этого:

protected void Session_Start(object sender, EventArgs e)
{
    Session["GoToBuyPage"] = true;
}

и попробуйте получить доступ к нему здесь в ActionFilterAttribute:

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    bool goToPage = (bool)Session["GoToBuyPage"];

это всегда ноль. Есть идеи почему?

1 ответ

Нет никаких Session свойство ActionFilterAttribute, Так что я даже не знаю, как ваш код компилируется. Следующее прекрасно работает для меня:

Фильтр действий:

public class FooAttribute: ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        bool goToPage = (bool)filterContext.HttpContext.Session["GoToBuyPage"];
        filterContext.Result = new ContentResult
        {
            Content = goToPage.ToString()
        };
    }
}

контроллер:

public class HomeController : Controller
{
    [Foo]
    public ActionResult Index()
    {
        return View();
    }
}

Session_Start:

protected void Session_Start(object sender, EventArgs e)
{
    Session["GoToBuyPage"] = true;
}
Другие вопросы по тегам