一些执行后,ReportViewer渲染会挂起服务器

时间:2018-01-23 13:34:47

标签: .net reportviewer

我有一个生成报告的服务。该部分的代码就像这样

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之间变化)< / p>

之后,它总是挂在这一行:

byteViewer = rv.LocalReport.Render("PDF");

为了让它再次工作(直到它再次挂起),我必须重新启动应用程序池

PD:出现此问题后,当我尝试重新启动应用程序池时,显示此错误 enter image description here

我必须转到服务并重新启动Credential Manager才能重新启动ApplicationPool

知道为什么会这样,我该如何解决?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我只需要调用LocalReport directy并解决问题。

using (LocalReport lr = new LocalReport()){
    lr.DataSources.Clear();
    lr.DataSources.Add(rds);
    lr.ReportEmbeddedResource = "xxxxxx.rdlc";
    lr.LocalReport.Refresh();
    byteViewer = lr.Render("PDF");
}