C# · 12月 29, 2021

c# – SSRS:在单个Web服务调用中获取所有报告和参数的列表?

简短而甜蜜的版本:是否有单一的Web服务方法返回所有可用报告的名称,以及每个报告的参数?

我有我的网络代码(C#/ MVC)连接到SSRS Web服务,我能够通过这些服务检索报告.

我知道我可以得到如下可用报告的列表:

var rService = new ReportingService2005{ Url = @”http://domain.com/ReportServer/ReportService2005.asmx?wsdl”,Credentials = System.Net.CredentialCache.DefaultCredentials};var reportList = rService.ListChildren(@”/Blah”,true);

ListChildren()的结果给出了很多信息,但是它没有列出每个报告的参数.为了获取报告的参数,我需要单独调用:

string historyId = null;ReportService.ParameterValue[] values = null;ReportService.DataSourceCredentials[] credentials = null;var parameters = rService.GetReportParameters(@”/Blah/” + reportName,historyId,true,values,credentials);

所以如果我想获得所有可用的报告及其参数,我将需要循环查看ListChildren的结果,这意味着我将为每个报告创建一个Web服务调用.

有更好的做法吗?

解决方法 没有这样一个对webservices界面的调用.作为替代方案,您可以通过直接查询ReportServer DB中的报表服务系统表来实现类似的操作;但这将取决于版本,MS可能不会支持它.

话虽如此,我已经用这些表来创建过去的几个报告.并没有遇到任何问题YMMV.