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

时间:2010-07-02 20:56:38

标签: c# web-services reporting-services

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

我的网络代码(C#/ MVC)已连接到SSRS网络服务,我可以通过这些服务检索报告。

我知道我可以获得这样的可用报告列表:

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服务调用。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

webservices接口没有这样的bulitin。作为替代方案,您可以通过直接查询ReportServer DB中的报告服务系统表来实现类似的功能;但这将取决于版本,MS可能不会支持它。

话虽如此,我过去曾使用这些表格创建了几个特别报告。并没有遇到任何问题YMMV。

答案 1 :(得分:0)

我用这种方式使用了ListChildren。

ReportingService2005 rService = new ReportingService2005();
rService.Credentials = System.Net.CredentialCache.DefaultCredentials;

CatalogItem[] catalogItems = rService.ListChildren("/", true);

这些将为您提供报表管理器中的所有报表,文件夹和数据源。 然后使用您的代码过滤它,

foreach (CatalogItem item in catalogItems.Where(m => m.Name.ToLower().Contains(model.ReportName.ToLower())))
{
  Your code;    
}