5

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

4

1 に答える 1