此刻我有屬性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