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");
}