ReportViewer rendering hangs server after some exe

2019-08-22 13:15发布

问题:

I have a service that generates a Report. The code for that part is like this

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

On my computer it works OK, but I have published it on the server and it works OK...but only during a few executions (it can vary from 5 to 25 in differents tests I've done)

After that, it always hangs on this line:

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

To make it work again (until it hangs again), I have to restart Application Pool

PD: After this problem appears, when I try to restart the Application Pool this error is show

And I have to go to the services and restart the Credential Manager to be able to restarte the ApplicationPool

Any idea why this is happening and how can i solve it?

回答1:

I found the solution.

I only had to call the LocalReport directy and the problem dissapears.

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