小编use*_*153的帖子

ASP.NET应用程序从Session.Remove实现中抛出System.NullReferenceException

我们在ASP.NET Web应用程序中得到随机的System.NullReferenceException.我们正在使用inproc会话状态.堆栈跟踪:

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)
Run Code Online (Sandbox Code Playgroud)

问题似乎来自Page.PageStatePersister属性,我们已经覆盖了这样的属性.

protected override PageStatePersister PageStatePersister {
  get {
    return new SessionPageStatePersister(Page); 
  }
}
Run Code Online (Sandbox Code Playgroud)

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 
Run Code Online (Sandbox Code Playgroud)

有什么想法,可能会导致那些异常吗?

环境:

IIS6,Windows Server 2003 64位,.net …

asp.net session nullreferenceexception

5
推荐指数
1
解决办法
1182
查看次数

标签 统计

asp.net ×1

nullreferenceexception ×1

session ×1