我通过以下方式将会话存储切换到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,则它可以正常工作。 还有一点,我可以在会话中添加项目确定 - 这似乎是在重新加载页面时发生的 - 可能是某种AJAX问题?
在设置SQL Session存储方面,我这样做了: http://support.microsoft.com/kb/317604
当我运行它时,该应用程序正常工作。
提前致谢。
吉姆
编辑 - 在应用程序日志中,我现在可以看到: 程序集'System.Web中的'System.Web.UI.WebControls.ListItem',Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'未标记为可序列化。
......而且确实如此,我正在向视图状态添加一个列表项。 但为什么这样可以正常 - 除非在SQL中存储会话?]
再次感谢!
吉姆
答案 0 :(得分:0)
看起来this可能是一个很好的答案吗?
答案 1 :(得分:0)
好吧,当你需要外化/序列化内容时,需要调用serialize来获取流。 ListItem是一个你不应该序列化的UI控件.. :) http://bytes.com/topic/asp-net/answers/322990-serializing-drop-down-list-data-sources-session-state