此刻我有属性runAllManagedModulesForAllRequests="true"
设置,所以我的模块正在运行的所有请求。我想这包括SessionStateModule
。SessionStateModule vs runAllManagedModulesForAllRequests =“true”
当试图访问会话对象在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
?
干杯。
按照此链接:http://www.iis.net/learn/get-started/introduction-to-iis/iis-modules-overview#Precondition当你有runAllManagedModulesForAllRequests = TRUE,前提条件没有影响。此行为虽然可能会根据管道模式(集成或经典)而有所不同。你可以添加你使用的管道模式。 – dotnetguy