2010-07-18 36 views
2

我有一個服務器列表,所有服務器公開了相同的Web服務接口,我需要從我的代碼調用。Web服務URI的動態綁定

https://server1/service.asmx 
https://server2/service.asmx 
https://server3/service.asmx 

我的代碼需要得到服務器的列表和調用上所有的人相同的功能。

我添加了對此服務的Web引用,並使用「動態」URL行爲。這應該讓我創建一個服務器代理對象的實例,在運行時設置URI屬性,然後調用Web方法,對吧?

但似乎由VS生成的代碼假定URI將來自應用程序的配置文件,而不是這個應用程序的情況。

public SharpEyeWebService() { 
     this.Url = global::Company.DotNet.MyProject.Properties.Settings.Default.MyWebService; 
     if ((this.IsLocalFileSystemWebService(this.Url) == true)) { 
      this.UseDefaultCredentials = true; 
      this.useDefaultCredentialsSetExplicitly = false; 
     } 
     else { 
      this.useDefaultCredentialsSetExplicitly = true; 
     } 
    } 

它是安全的忽略默認URL構造用途和使用我上面介紹的方法呢?

回答

3

你可以總是設置Url,所以是的這是安全的。您所描述的「動態」僅影響默認值Url:它是硬編碼還是來自config。

確實,如果你自己提供這個,這是沒有意義的。

這裏的尷尬點在於,它也根據它的發現設置了UseDefaultCredentials - 所以這是值得手動設置的,所以你知道這個值。

+0

相同的憑據配置似乎設置在URL的屬性設置器中,所以我認爲沒關係。 – 2010-07-18 10:32:41