2010-02-10 109 views
3

我有超過三個網絡服務, 在那一個是主站點,其他人是客戶站點。如何更改WCF服務端點?

在我的用戶界面一個文本框是可用的,在該文本框中,我需要給該目標終點地址 從文本框我需要調用客戶端服務。

例如:

客戶端1終點服務名稱:

    http://localhost:1524/WebServiceService.svc" 

客戶機2結束點服務名稱:

通過

Rajagopalk

    http://localhost:8085/WebServiceService.svc" 

如果我給「本地主機:1524」在文本框客戶端1服務將調用, 如果我給「本地主機:8085」在文本框客戶端2服務將調用,

回答

6

你在IIS託管的WCF服務?在這種情況下,您的服務地址由IIS配置和服務的* .svc文件所在的虛擬目錄決定。

因此,要更改服務器上的某些內容,您需要檢查並修改IIS配置。

要更改的客戶端,有您的端點定義應包含一個web.config(用於ASP.NET網)或(的applicationName).exe.config - 改變那裏的端點地址:

<client> 
    <endpoint name="YourEndpointName" 
     address="http://localhost:8085/WebServiceService.svc" 
     binding="......." bindingConfiguration="............." 
     contract="..................." /> 
</client> 

您需要在<endpoint>配置元素的address=屬性中指定完整的目標Web服務地址。

可以定義爲同一服務的多個端點,並選擇當實例的客戶端代理使用哪一個:

MyServiceProxy client = new MyServiceProxy("name of endpoint configuration"); 

,並與這一點,你可以很容易地端點的幾種定義之間切換。

UPDATE:如果你想以編程方式設置從代碼客戶端地址,您需要在創建客戶端代理時要做到以下幾點:

// create custom endpoint address in code - based on input in the textbox 
EndpointAddress epa = new EndpointAddress(new Uri(textbox.Text)); 

// instantiate your cilent proxy using that custom endpoint address 
// instead of what is defined in the config file 
MyServiceProxy client = new MyServiceProxy("name of endpoint configuration", epa); 
+0

喜, <端點名稱=「YourEndpointName」 地址=「http:// localhost:8085/WebServiceService.svc」 binding =「.......」bindingConfiguration =「.............」 contract =「... ................「/> 在地址節點而不是本地主機:8085我需要給文本框VAL UE。請簡要解釋一下。因爲我是WCF – Rajagopalk 2010-02-10 06:08:13

+0

的新手,請不要將xml配置文件放入註釋中 - 真的很難閱讀。更新您的原始問題與額外的信息! – 2010-02-10 06:51:49

+0

嗨, 我需要從一臺服務器發送數據到許多客戶端。取決於他們的任務,我需要維護服務器設置,在該設置中,我需要提到客戶端URI,這取決於我需要訪問的客戶端服務的URI,我需要將數據傳輸到該客戶端。更多的事情是如何還要維護App.Config文件。 謝謝, Rajagopalk – Rajagopalk 2010-02-11 13:54:55