简短版本:是否有单一的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服务调用。
有更好的方法吗?
答案 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;
}