ASP.NET Web アプリケーションでランダムな System.NullReferenceException を取得しています。インプロセス セッション状態を使用しています。スタックトレース:
System.NullReferenceException: Object reference not set to an instance of an object.
at System.Collections.Specialized.NameObjectCollectionBase.BaseRemove(String name)
at System.Web.SessionState.SessionStateItemCollection.Remove(String name)
at System.Web.SessionState.HttpSessionStateContainer.Remove(String name)
at System.Web.UI.SessionPageStatePersister.Save()
at System.Web.UI.Page.SaveAllState()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
問題は、このようにオーバーライドした Page.PageStatePersister プロパティにあるようです。
protected override PageStatePersister PageStatePersister {
get {
return new SessionPageStatePersister(Page);
}
}
Reflector は、SessionPageStatePersister が内部的に Session.Remove を呼び出すことを示しました。
Page で直接 Session.Remove を呼び出すと、同様のランダムな NullReferenceException が発生します。関連するスタックトレース:
---> System.NullReferenceException: Object reference not set to an instance of an object.
at System.Collections.Specialized.NameObjectCollectionBase.BaseRemove(String name)
at System.Web.SessionState.SessionStateItemCollection.Remove(String name)
at System.Web.SessionState.HttpSessionStateContainer.Remove(String name)
at System.Web.SessionState.HttpSessionState.Remove(String name)
at PERH.WebFramework.Bases.PageBase.OnPreInit(EventArgs e) in
これらの例外の原因は何ですか?
環境:
IIS6、Windows Server 2003 64 ビット、.net Framework 3.5