ReportViewer 渲染在某些执行后挂起服务器
ReportViewer rendering hangs server after some executions
我有一个生成报告的服务。那部分的代码是这样的
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSetDIR";
rds.Value = dataSource;
using (ReportViewer rv = new ReportViewer()){
rv.LocalReport.DataSources.Clear();
rv.LocalReport.DataSources.Add(rds);
rv.LocalReport.ReportEmbeddedResource = "xxxxxx.rdlc";
rv.LocalReport.Refresh();
byteViewer = rv.LocalReport.Render("PDF");
rv.LocalReport.Dispose();
}
在我的电脑上它工作正常,但我已经将它发布在服务器上并且它工作正常......但仅在几次执行期间(在我完成的不同测试中它可以从 5 到 25 不等)
之后一直挂在这一行:
byteViewer = rv.LocalReport.Render("PDF");
为了让它再次工作(直到它再次挂起),我必须重新启动应用程序池
PD: 出现此问题后,当我尝试重新启动应用程序池时显示此错误
而且我必须转到服务并重新启动凭据管理器才能重新启动 ApplicationPool
知道为什么会这样吗?我该如何解决?
我找到了解决方案。
我只需要直接调用 LocalReport,问题就消失了。
using (LocalReport lr = new LocalReport()){
lr.DataSources.Clear();
lr.DataSources.Add(rds);
lr.ReportEmbeddedResource = "xxxxxx.rdlc";
lr.LocalReport.Refresh();
byteViewer = lr.Render("PDF");
}
我有一个生成报告的服务。那部分的代码是这样的
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSetDIR";
rds.Value = dataSource;
using (ReportViewer rv = new ReportViewer()){
rv.LocalReport.DataSources.Clear();
rv.LocalReport.DataSources.Add(rds);
rv.LocalReport.ReportEmbeddedResource = "xxxxxx.rdlc";
rv.LocalReport.Refresh();
byteViewer = rv.LocalReport.Render("PDF");
rv.LocalReport.Dispose();
}
在我的电脑上它工作正常,但我已经将它发布在服务器上并且它工作正常......但仅在几次执行期间(在我完成的不同测试中它可以从 5 到 25 不等)
之后一直挂在这一行:
byteViewer = rv.LocalReport.Render("PDF");
为了让它再次工作(直到它再次挂起),我必须重新启动应用程序池
PD: 出现此问题后,当我尝试重新启动应用程序池时显示此错误
而且我必须转到服务并重新启动凭据管理器才能重新启动 ApplicationPool
知道为什么会这样吗?我该如何解决?
我找到了解决方案。
我只需要直接调用 LocalReport,问题就消失了。
using (LocalReport lr = new LocalReport()){
lr.DataSources.Clear();
lr.DataSources.Add(rds);
lr.ReportEmbeddedResource = "xxxxxx.rdlc";
lr.LocalReport.Refresh();
byteViewer = lr.Render("PDF");
}