Короткая и сладкая версия: существует ли единственный метод веб-сервиса, который возвратил бы названия всех доступных отчетов и параметры каждого отчета?
У меня есть свой веб-код (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, что означает, что я заставил бы веб-сервис призвать к каждому из тех отчетов.
Существует ли лучший способ сделать это?
Такой сводки вызовов к интерфейсу веб-сервисов нет. В качестве альтернативы вы можете добиться чего-то подобного, напрямую запрашивая системные таблицы служб отчетов в базе данных ReportServer; но это будет зависеть от версии, и MS, вероятно, не будет его поддерживать.
При этом я использовал эти таблицы для создания нескольких специальных отчетов в прошлом. и проблем YMMV не испытывал.