SqlSessionState:无法将System.DBNull类型的对象强制转换为System.Byte []类型

时间:2015-06-01 15:58:31

标签: c# asp.net webforms sql-session-state

偶尔我们会收到以下错误消息。我无法重现它。我已尝试注销并导航到需要身份验证的页面,但它不会抛出此异常。

到目前为止,此异常仅发生在页面加载后立即调用的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)

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

听起来你的会话已超时但你假设你正在从会话状态中检索对象。

我建议在尝试分配会话对象之前在代码中添加空检查。