我有两个运行相同配置的SSRS服务器。好吧,三个。让我们打电话给他们:
- 报告服务器
- 报告服务器A检验
- 报告服务器B
现在,根据我是使用Web.config变换中的测试还是生产,我可以轻松地在A和A测试之间进行交换。很好。
但是,在运行时,我希望能够在将呼叫发送到服务器A和B。
之间我可以通过创建两个不同的ReportingService2010对象来做到这一点:一个带有命名空间com.com.com.com.pany.servera,另一个带有名称空间com.com.com.com.com.pan.serverb。这将需要很多有条件的陈述,但可以做到。
我很想能够使用多态性并通过我的ReportCopopier类不同的ReportingService2010对象,但它们的相关性不够。编译器像对待完全分开的对象一样对待它们。
有什么方法可以解决吗?有什么方法可以动态更改reportingservice2010对象在运行时指向的URL?有没有办法通过以某种方式使用反射来处理两种对象?
目前,我拥有的唯一解决方案是1)对所有似乎乏味的对象实现包装类别类别或2)使用两份reportCopier类的副本,其中仅更改了名称空间,这很丑陋。
想法?
这是迄今为止我发现一个棘手问题的最简单的解决方案:我可以设置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";