我有一个生成报告的服务。该部分的代码就像这样
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:出现此问题后,当我尝试重新启动应用程序池时,显示此错误
我必须转到服务并重新启动Credential Manager才能重新启动ApplicationPool
知道为什么会这样,我该如何解决?
答案 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");
}