Reporting Services Web服务,C#.NET代码重用

时间:2011-12-30 10:24:35

标签: c# asp.net web-services reporting-services

我正在为一组报表服务服务器构建自定义前端。我正在使用;

将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。

1 个答案:

答案 0 :(得分:1)

如果所有SSRS实例都是相同的版本,您应该能够在代理对象上设置URL属性:

Server1WebService server.url = new uri ("http://server/ReportServer_InstanceName/ReportService2005.asmx?wsdl"));

如果您要处理多个版本,则可能需要提供某种类型的工厂对象,以便正确实例化正确的版本。

希望这有帮助