2011-12-30 104 views
1

我正在爲報告服務服務器集合構建自定義前端。我使用的是將ReportingServices2005 Web引用添加到我的項目中;報告服務Web服務,C#.NET代碼重用

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

提供的所有SSRS實例的版本相同,你應該能夠設置代理對象的URL屬性:

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

如果你有多個版本來處理,你可能需要提供一些可正確實例化正確版本的工廠對象。

希望這會有幫助

+0

從來沒有注意到財產!我以類似的方式解決了這個問題,方法是用一個新的URL以編程方式覆蓋配置緩存中的相關應用程序密鑰。雖然感覺像一個軟糖,我更喜歡這個答案。 – 2012-01-02 20:27:13