2010-01-27 29 views
0

如何配置WCF以僅使用一個兩個可用端點?將WCF配置爲使用兩個端點中的一個

我需要兩個TCP端口(因此使用netTcpBinding)。服務主機應該首先嚐試綁定到第一個端口。如果失敗,並且只有失敗,它應該嘗試綁定到第二個端口。

編輯

我知道它可以被編程achived,但我的本意是聲明(僅使用.config文件)做的。

回答

2

在使用代理對象打開連接之前,可以在進程中的任意位置以代碼設置端點地址(包括端口號)。因此,您可以設置地址,然後測試連接,如果失敗,請嘗試其他端口。這裏有一些代碼希望能夠說明我的觀點。

Dim oProxy as New YourWCFServiceType() 

oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try first")) 

Dim FirstBindingSucceeded as Boolean 
Try 
    oProxy.Open() 
    FirstBindingSucceeded = True 
Catch 
End Try 

If FirstBindingSucceeded = False Then 
    oProxy.Endpoint.Address = New System.ServiceModel.EndpointAddress(New Uri("The address and port number you want to try second")) 
End If 

oProxy.Open() 
+0

我想做它聲明。 – 2010-01-28 07:54:29

+0

我仍然認爲我的回答解決了您的問題。您的.config文件中定義的端點只是默認值。如果你想在兩個不同的地址/端口之間進行選擇,那麼只需在設置中添加一個設置,並在需要時讀取它。 <添加鍵=「FailOverURL」值=「鏈接」 /> 我認爲,開銷涉及由西拉Bhaiji描述將大大降低合同類型之間的切換的量有兩個端點默認定義的好處。當你需要第三個端口時會發生什麼? – 2010-01-28 16:36:53

1

在服務器端,使用兩個綁定暴露服務沒有問題。

但是在客戶端,你會得到一個重複的合同錯誤(或類似的話)

一種方式做到這一點是創建兩個接口是除名稱相同(合同)。

你有一個實現的副本,每個服務都從這個實現繼承。

然後,您在不同的端口上有兩個服務,它們具有相同的實現/功能。

在客戶端上,您需要編程它首先嚐試第一個端口,然後如果失敗則嘗試第二個端口。

相關問題