2013-11-01 99 views
1

此刻我有屬性runAllManagedModulesForAllRequests="true"設置,所以我的模塊正在運行的所有請求。我想這包括SessionStateModuleSessionStateModule 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

乾杯。

回答

3

看起來IIS使用託管處理程序的先決條件加載默認模塊以確保向後兼容。 http://forums.iis.net/post/1904024.aspx

+0

按照此鏈接:http://www.iis.net/learn/get-started/introduction-to-iis/iis-modules-overview#Precondition當你有runAllManagedModulesForAllRequests = TRUE,前提條件沒有影響。此行爲雖然可能會根據管道模式(集成或經典)而有所不同。你可以添加你使用的管道模式。 – dotnetguy

相關問題