2012-04-17 26 views
4

我將我的網站從.NET 1.1升級到.NET 4.0。在我的Global.asax.vb文件中,我嘗試訪問Application_AcquireRequestState 方法中的Context.Session對象,並在我第一次嘗試訪問網站時收到空引用異常。Context.Session對象在Application_AcquireRequestState中爲空

我使用IIS 7.5在不同的測試服務器上安裝了網站的.NET 4.0版本,一切似乎都正常。但是當我在使用IIS 6的原始服務器上安裝網站的.NET 4.0版本時,我收到異常。

任何想法,爲什麼我得到這個異常?不同版本的IIS是否以不同方式處理HTTP管道事件?或者,當Session對象在我使用的兩個.NET版本之間變得可用時有什麼不同?

任何幫助將不勝感激,謝謝!

回答

3

您應該使用的Application_PreRequestHandlerExecute代替Application_AcquireRequestState

我只是固定的同樣的問題,但對於C#,翻譯代碼它必須是類似的東西:

Private Sub Application_PreRequestHandlerExecute(sender As Object, e As EventArgs) 
If TypeOf Context.Handler Is IRequiresSessionState OrElse TypeOf Context.Handler Is IReadOnlySessionState Then 
    ' HttpContext.Current.Session should be available 
End If 
End Sub