MVC SessionStateAttribute не работает как глобальный атрибут - PullRequest
6 голосов
/ 30 марта 2011

Как настроить SessionStateAttribute в качестве глобального фильтра в MVC3?В моем Global.asax я имею это в методе RegisterGlobalFilters.

filters.Add(new SessionStateAttribute(SessionStateBehavior.Disabled));

И в моем домашнем контроллере у меня есть это.

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        Session["Blend"] = "Will it blend?";

        return View();
    }

    public ActionResult About()
    {
        return View();
    }
}

Но по какой-то причине он все еще позволяет мне использоватьсессия.Однако, если я декорирую сам класс HomeController с помощью атрибута, я получаю сообщение об ошибке, в котором используется Session о нулевой ссылке на объект, что, как я предполагаю, предназначено, если Session никогда не создается?

IЯ начинаю задаваться вопросом, если что-то не так с моим проектом.У меня были небольшие проблемы, подобные этой, со стандартным поведением, которое должно просто работать.

У кого-нибудь еще были проблемы с такими вещами?

1 Ответ

11 голосов
/ 30 марта 2011

SessionStateAttribute не является фильтром действий , поэтому вы не можете добавить его в качестве глобального фильтра действий.Это специальный атрибут, который позволяет вам украшать свои контроллеры и иметь более детальный контроль над режимом сеанса для каждого контроллера.

Чтобы отключить сеанс глобально для всего приложения, добавьте в ваш web.config следующее:

<sessionState mode="Off" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...