Pertanyaan SSRS: Dapatkan daftar semua laporan dan parameter dalam satu panggilan layanan web?


Versi singkat dan manis: Apakah ada metode layanan web tunggal yang akan mengembalikan nama semua laporan yang tersedia, dan setiap parameter laporan?

Saya memiliki kode web (C # / MVC) yang terhubung ke layanan web SSRS, dan saya dapat mengambil laporan melalui layanan tersebut.

Saya tahu saya bisa mendapatkan daftar laporan yang tersedia seperti ini:

var rService = new ReportingService2005
{
 Url = @"http://domain.com/ReportServer/ReportService2005.asmx?wsdl",
 Credentials = System.Net.CredentialCache.DefaultCredentials
};

var reportList = rService.ListChildren(@"/Blah", true);

Hasil ListChildren () memberikan banyak informasi, tetapi tidak mencantumkan parameter untuk setiap laporan. Untuk mendapatkan parameter untuk laporan, saya perlu membuat panggilan terpisah:

string historyId = null;
ReportService.ParameterValue[] values = null;
ReportService.DataSourceCredentials[] credentials = null;

var parameters = rService.GetReportParameters(@"/Blah/" + reportName, historyId, true, values, credentials);

Jadi jika saya ingin mendapatkan semua laporan yang tersedia dan parameternya, saya perlu mengulang hasil ListChildren, yang berarti saya akan membuat panggilan layanan web untuk masing-masing laporan tersebut.

Apakah ada cara yang lebih baik untuk melakukan ini?


11
2017-07-02 20:56


asal


Jawaban:


Tidak ada panggilan seperti bulitin ke antarmuka webservices. Sebagai alternatif, Anda dapat mencapai sesuatu yang serupa dengan menanyakan secara langsung tabel sistem layanan pelaporan dalam ReportServer DB; tetapi ini akan menjadi versi tergantung, dan MS mungkin tidak akan mendukungnya.

Itu dikatakan saya telah menggunakan tabel ini untuk membuat beberapa laporan adhoc di masa lalu. dan tidak mengalami masalah apa pun YMMV.


1
2017-07-03 03:48



saya menggunakan ListChildren dengan cara ini.

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

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

ini akan memberi Anda semua laporan, folder, dan sumber data dari Manajer laporan. lalu saring dengan kode Anda seperti,

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

0
2018-03-29 08:30