如何在AuthorizeAttribute.AuthorizeCore方法中将Session设置为null?

时间:2012-10-08 12:03:00

标签: c# asp.net-mvc session asp.net-mvc-migration

我有一个继承自AuthorizeAttribute的自定义属性类。有时参数httpContext.Session为空。这怎么可能?只要我记录/活动,会话就应该是活着的,对吧?我不是20分钟或更长时间,实际上我只是浏览0-2分钟,有时会话属性为空。

我们有这个错误,因为我们从MVC 2(.NET 3.5)切换到MVC 4.5(.Net 4.5)这是否可能导致问题?

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

  

这怎么可能?

如果您已禁用会话状态,则可能会发生这种情况。为了禁用会话状态,您可以在web.config中使用以下内容:

<sessionState mode="Off" />

或者您可以使用[SessionState]属性修饰控制器/基本控制器/操作:

[SessionState(SessionStateBehavior.Disabled)]
public class HomeController : Controller
{
    ...
}

答案 1 :(得分:1)

这可能是一个缓存问题。尝试覆盖:

OnCacheAuthorization
过滤器中的

。 或删除:

OutputCache
来自控制器中操作的

属性。