【问题标题】:MVC SessionStateAttribute not working as Global AttributeMVC SessionStateAttribute 不能用作全局属性
【发布时间】:2011-07-26 06:52:23
【问题描述】:

如何在 MVC3 中将 SessionStateAttribute 设置为全局过滤器? 在我的 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();
    }
}

但由于某种原因,它仍然让我使用 Session。但是,如果我用该属性装饰 HomeController 类本身,我会在使用 Session 的行上收到关于 Object 引用为 null 的错误,我猜如果 Session 从未创建过,这是有意的?

我开始怀疑我的项目是否有问题。我遇到了像这样的小问题,标准行为应该正常工作。

还有其他人遇到过这样的问题吗?

【问题讨论】:

    标签: session asp.net-mvc-3 attributes session-state


    【解决方案1】:

    SessionStateAttribute 不是action filter,因此您不能将其添加为全局操作过滤器。这是一个特殊的属性,允许您使用控制器来装饰控制器,并对每个控制器的会话模式进行更细粒度的控制。

    要为整个应用程序全局禁用会话,请将以下内容放入您的 web.config:

    <sessionState mode="Off" />
    

    【讨论】:

    • 哇,这有点有趣。您会惊讶地发现有多少网站使用 SessionStateAttribute 作为如何在 MVC 中使用全局过滤器的示例,我猜在将它们发布到互联网:-P
    猜你喜欢
    • 2021-06-17
    • 2021-12-31
    • 2020-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多