【发布时间】:2011-01-21 11:35:09
【问题描述】:
我已通过以下方式将会话存储切换到 SQL 服务器:
<sessionState mode="SQLServer"
sqlConnectionString="data source= jim; user id=jim;password=jim;"
cookieless="false"
timeout="20" />
</system.web>
现在我在这段代码中收到以下错误
var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
if (error && !eventArgs.get_errorHandled()) {
throw error;
}
Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerServerErrorException: 发生未知错误时 在服务器上处理请求。 从返回的状态码 服务器是:500
如果我将会话保留为默认设置而不是 SQL Server,则它可以正常工作。 还有一点,我可以在会话中添加项目 OK - 这似乎是在重新加载页面时发生的 - 可能是某种 AJAX 问题?
在设置 SQL 会话存储方面,我这样做了: http://support.microsoft.com/kb/317604
应用程序在我运行时运行良好。
提前致谢。
吉姆
编辑 - 在应用程序日志中,我现在可以看到: 程序集“System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”中的“System.Web.UI.WebControls.ListItem”未标记为可序列化。
...确实如此,我正在向视图状态添加一个列表项。 但是为什么这可以正常工作 - 除了在 SQL 中存储会话时?]
再次感谢!
吉姆
【问题讨论】:
-
您可以从会话中添加/检索项目并显示在屏幕上吗?
-
另外,请检查服务器窗体 ASP.NET 的事件查看器中是否有任何条目。它可能已经写出了堆栈跟踪。
-
嗨 - 是的...从会话中添加和检索是可以的
-
@gbvb - 好电话 - 我已经更新了我的原始问题以反映日志中的内容。谢谢。
-
为什么需要手动触发 EndRequest?您的会话工作正常,可能与错误无关。
标签: asp.net sql-server session-state