偶尔我们会收到以下错误消息。我无法重现它。我已尝试注销并导航到需要身份验证的页面,但它不会抛出此异常。
到目前为止,此异常仅发生在页面加载后立即调用的Web服务上。 (因此发生页面加载,然后onready事件开始使用ajax调用加载一些数据)
我们正在使用带有SQL Server会话存储的Web表单。
Unable to cast object of type 'System.DBNull' to type 'System.Byte[]'.
at System.Web.SessionState.SqlSessionStateStore.DoGet(HttpContext context, String id, Boolean getExclusive, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) at System.Web.SessionState.SqlSessionStateStore.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actionFlags) at System.Web.SessionState.SessionStateModule.GetSessionStateItem() at System.Web.SessionState.SessionStateModule.BeginAcquireState(Object source, EventArgs e, AsyncCallback cb, Object extraData) at System.Web.HttpApplication.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
听起来你的会话已超时但你假设你正在从会话状态中检索对象。
我建议在尝试分配会话对象之前在代码中添加空检查。