我正在为一组报表服务服务器构建自定义前端。我正在使用;
将ReportingServices2005 Web引用添加到我的项目中http://server/ReportServer_InstanceName/ReportService2005.asmx?wsdl
目前我的方法是为每个服务器添加此引用,但是我正在努力解决代码重用问题。然后,报告服务类是不同的名称空间。
我想要一个如下方法;
public string ListReports(Server1WebService.ReportingService2005 service) {
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
service.Server1WebService.CatalogItem[] children = service.ListChildren("/", true);
string list = String.Empty;
foreach (Server1WebService.CatalogItem i in children) {
if (!i.Hidden)
list += i.Name + "</br>";
}
return list;
}
要使此方法可重用,我需要知道如何重构此方法,以便无论命名空间如何都可以传递ReportingService2005类的任何实例。目前,我必须为ReportingService2005和CatalogItem的所有引用指定Server1WebService。
答案 0 :(得分:1)
如果所有SSRS实例都是相同的版本,您应该能够在代理对象上设置URL属性:
Server1WebService server.url = new uri ("http://server/ReportServer_InstanceName/ReportService2005.asmx?wsdl"));
如果您要处理多个版本,则可能需要提供某种类型的工厂对象,以便正确实例化正确的版本。
希望这有帮助