【发布时间】:2012-10-05 09:36:50
【问题描述】:
我在 Web 应用程序中使用 VS2010 Report Viewer 控件。应用程序会话状态模式设置为StateServer如下
<sessionState timeout="30" mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" />
reportviewer 控件在我的开发机器上工作正常,但是当应用程序部署到服务器上并且加载 reportviewer 控件页面时抛出以下错误。所有其他页面工作正常。
"无法序列化会话状态。在 'StateServer' 和 'SQLServer' 模式下,ASP.NET 将序列化会话状态对象,因此不允许使用不可序列化对象或 MarshalByRef 对象。如果自定义会话状态存储在“自定义”模式下完成类似的序列化,则适用相同的限制。”
任何人都可以帮忙,任何想法都会有很大帮助..
提前致谢。
rptvw.ProcessingMode = ProcessingMode.Remote;
rptvw.ServerReport.ReportServerUrl = new Uri("http://localhost:90/reportserver");
rptvw.ServerReport.ReportPath = string.Format("/Reports/{0}", reportName);
var param = new ReportParameter[4];
param[0] = new ReportParameter("Parameter1", DropDownListCodes.SelectedValue));
param[1] = new ReportParameter("Parameter2", DropDownListQuarters.SelectedValue));
param[2] = new ReportParameter("Parameter3", DropDownListComparators.SelectedValue));
param[3] = new ReportParameter("Parameter4", comptype);
rptvw.ServerReport.SetParameters(param);
rptvw.ServerReport.Refresh();
【问题讨论】:
-
我认为您错过了此连接字符串上的
Initial Catalog=,或者您尝试向会话中添加一个无法序列化的列表,例如字典 -
感谢您的回复。上面的标签不是一个连接字符串,它是一个 sessionState 标签。只是让你知道,我没有在该页面上的 Session 中存储任何内容。只需使用 reportviewer 控件加载 .rdlc 报告。
-
正如@Aristos 所说,您应该在 ReportViewer 页面上检查会话中放入的内容。据我所知,RV 不会在会话中存储任何特殊内容
-
谢谢。刚刚将代码添加到我的主要帖子中,我使用 ViewState 来存储报告名称,除此之外,我没有做任何复杂的事情。
标签: asp.net reporting-services reportviewer report-viewer2010