Веб-служба служб отчетов, повторное использование кода на C # .NET - PullRequest
1 голос
/ 30 декабря 2011

Я создаю пользовательский интерфейс для набора серверов служб отчетов.Я добавляю веб-ссылку ReportingServices2005 в свой проект, используя:

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 может быть передан независимо от пространства имен.На данный момент я должен указать Server1WebService для всех ссылок на ReportingService2005 и CatalogItem.

1 Ответ

1 голос
/ 31 декабря 2011

При условии, что все экземпляры SSRS имеют одинаковую версию, вы должны иметь возможность установить свойство URL для объекта прокси:

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

Если вам приходится иметь дело с несколькими версиями, вам может потребоваться предоставить некоторый тип фабричного объекта, который может правильно создать правильную версию.

Надеюсь, это поможет

...