C# 在AuthorizeAttribute.AuthorizeCore方法中,会话怎么可能为null?
我有一个自定义属性类,它继承自C# 在AuthorizeAttribute.AuthorizeCore方法中,会话怎么可能为null?,c#,asp.net-mvc,session,asp.net-mvc-migration,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)之后,我们就出现了这个错误。这可能是问题的原因吗 我怎样才能解决这个问题 这怎么可能 如果禁用了会话状态,则可能发生这种情况。要禁用会话状态,可以在web.confi
AuthorizeAttribute
。有时参数httpContext.Session
为空。这怎么可能?只要我被记录/激活,会话就应该是活动的,对吗?我不会浏览20分钟或更长时间,事实上我只是浏览0-2分钟,有时会话属性为空
自从我们从MVC 2(.NET 3.5)切换到MVC 4.5(.NET 4.5)之后,我们就出现了这个错误。这可能是问题的原因吗
我怎样才能解决这个问题
这怎么可能
如果禁用了会话状态,则可能发生这种情况。要禁用会话状态,可以在web.config中设置以下内容:
<sessionState mode="Off" />
这可能是缓存问题。尝试覆盖:
OnCacheAuthorization
在过滤器中。
或删除:
OutputCache
控制器中操作的属性。放置一个条件断点并找出何时/如何调用它。@HenkHolterman我确实放置了一个条件断点,但没有调用堆栈。它只是说“[外部代码]”,最上面是断点所在的行。你能从上下文中学到什么?特别是请求的目标。@HenkHolterman我不知道你的确切意思,但在HttpContext中。当前是会话null,我没有
sessionState mode=“Off”
所有内容都设置为“InProc”。我也没有一个SessionState attributeA演示如何覆盖它,以及这将是什么,在这里很方便。这是怎么回事?当您从OnCacheAuthorization
返回HttpValidationStatus.Invalid
时,则根本不调用authorizationcore
?确定。我发现:在这里搜索OnCacheAuthorization(HttpContextBase-httpContext)
。干杯!:)因此,如果必须为缓存的操作验证会话,他会怎么做?会话对象未在OnCacheAuthorization
内初始化。我的案子不需要,但如果需要呢?那不可能吗对不起,但这对我来说太晚了,我记不清细节了。我希望您能解决这个问题。@RomaineCarter我认为最简单的修复方法是在操作中自己实现一些缓存机制。
OutputCache