2016-12-08 12 views
0

У меня есть два сервера SSRS с одинаковыми конфигурациями. Ну, три, на самом деле. Давайте назовем их:Вызов разных серверов с тем же объектом ReportingService2010

  • Сервер отчетов A
  • Сервер отчетов A-тест
  • Отчетный сервер B

Теперь я могу легко переключаться между A и A-тест в зависимости от того, «я м в тесте или производстве с использованием преобразования web.config. Так все в порядке.

Однако во время выполнения Я хотел бы, чтобы иметь возможность переключаться между отправкой вызовов сервера A и B.

я мог бы потенциально сделать это путем создания двух разных объектов ReportingService2010: один с пространством имен com.company.serverA а другой - с пространством имен com.company.serverB. Для этого потребовалось бы множество условных заявлений, но это можно было бы сделать.

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

Есть ли способ обойти это? Есть ли способ динамически изменить URL-адрес, который указывает объект ReportingService2010 во время выполнения? Есть ли способ справиться с обоими типами объектов, используя отражение каким-то образом?

В настоящее время единственными имеющимися у меня решениями являются: 1) внедрять классы-оболочки для всех объектов, которые кажутся утомительными или 2) использовать две копии класса ReportCopier с измененным им пространством имен, что является уродливым.

Мысли?

+0

Вы ищете [Балансировка нагрузки] (https://msdn.microsoft.com/en-us/library/cc281307.aspx)? – SMM

+0

Нет, у нас есть две в основном идентичные копии, потому что мы приобрели компанию, и у них есть собственный экземпляр. –

ответ

0

Это самое беспроблемное решение, которое я нашел для сложной проблемы: я могу установить свойство URL. Я был слишком занят, заботясь о наследовании, чтобы понять это.

ReportingService2010 rs = new ReportingService2010(); 
rs.Url = "https://serverA.company.com:443/ReportServer/ReportService2010.asmx"; 
// or... 
rs.Url = "https://serverB.company.com:443/ReportServer/ReportService2010.asmx"; 

 Смежные вопросы

  • Нет связанных вопросов^_^