我有一个服务器报告,它引用了服务器上的共享数据集。如果我向页面添加ReportViewer
并设置报表服务器URL和报表路径属性,它可以正常工作。
因为我需要查看报告的xml并进行一些预处理,我: -
使用ReportingService2010.GetItemDefinition(path)
手动下载报告。然后我将其转换为XDocument
。
进行预处理 - 这与数据集无关。
使用以下命令将xml定义加载到报告查看器中:
XDocument processedDocument;
using (var sr = new StringReader(processedDocument.ToString()))
{
viewer.ServerReport.LoadReportDefinition(sr);
}
当我尝试查看报告时,我在服务器错误日志中看到此错误:
Microsoft.ReportingServices.Diagnostics.Utilities.InternalCatalogException:
共享数据集定义流不存在。
为了解决错误的关键,我已完全删除了第2步,以便我所做的就是下载报告,转换为xml,然后将xml加载到ReportViewer
。
当数据集嵌入到报表中时,我不会遇到此问题。
这里有什么想法吗?
ETA:
如果我下载报告,转换为XDocument,转换回byte [],然后使用ReportingService2010.SetItemDefinition()将报告保存在服务器上,它在ReportViewer中显示正常(当指定路径时)。 / p>
这意味着问题不在xml< - > byte []转换中。当ReportViewer使用路径下载报表时,它必须使用我未执行的引用共享数据集执行某些操作。
答案 0 :(得分:0)
我有一个解决方法。
共享DataSet的相对路径似乎存在问题。我认为我也会在服务器上引用共享图像时遇到同样的问题。
这是我打算做的事情:
<强> ETA:强>
实际上,因为DataSet路径引用始终从根开始,所以我认为您不必将报告存储在完全相同的位置。您可以创建一个可以轻松定期清理的/ Temp文件夹。