目前我设置了属性runAllManagedModulesForAllRequests="true"
,因此我的模块正在运行所有请求。我想这包括SessionStateModule
。
当尝试在我的一个自定义模块中的PostAcquireRequestState
事件处理程序中访问会话对象时,HttpContext.Current.Session
为空时HttpApplication.Context.CurrentHandler
为空(例如:对于JS / CSS文件),当处理程序为MvcHandler
时它不为空(因为我猜它是一个托管处理程序)。
我一直在查看ILSpy中的SessionStateModule
代码,我找不到在哪里决定跳过该请求的Session。
我一直在查看%windir%\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
并且没有提及SessionStateModule
,并且在该文件夹的Web.config
中我找到了:
<add name="Session" type="System.Web.SessionState.SessionStateModule" />
所以它没有使用任何先决条件,如managedHandler
。
是否有人知道为什么即使设置了属性SessionStateModule
,runAllManagedModulesForAllRequests
也会对非托管资源进行跳过请求?
干杯。