2010-06-23 97 views
3

如果需要在異構環境中的WAS託管的服務中公開多個端點(例如,一個使用basicHttpBinding,另一個使用netTcpBinding),那麼如何執行?WAS託管的WCF服務中的單個合同的多個端點?

我讀過的關於WAS端點配置的一切都表明,端點地址和主機基地址應該留空,因爲WAS應該通過路徑到.svc文件和協議自動解析地址。

但是,在不解釋地址的情況下,爲同一合同定義HTTP端點和TCP端點似乎是不可能的。到目前爲止,我的每一次嘗試都讓我感到co「的」一個綁定實例已經被關聯到聆聽uri「的錯誤。

想法?

感謝

+0

它不應該顯示錯誤綁定地址固定加入httpGetUrl hainvg同樣的問題如果您爲每個端點指定不同的基礎URL。你可以在這裏發佈你的配置文件代碼嗎? – decyclone 2010-06-23 19:05:00

+0

@decyclone: 從我讀過的MSDN中,基地址不應該用WAS指定。 WAS應該通過協議和.svc文件的路徑來解析地址。由於兩個端點使用不同的協議,每個協議都應該唯一解決。 謝謝 – user364825 2010-06-23 19:14:27

回答

0

據我瞭解,在* .svc文件僅適用於HTTP協議,如可行你可以用它來連接你的basicHttpBinding。在這種情況下,你是絕對正確的 - 服務的基地址和端點的地址屬性被忽略 - 服務URI由服務器名稱,可選的端口,SVC文件所在的虛擬目錄以及服務器的名稱和擴展名SVC文件本身。

所以只要你不需要多個不同的類HTTP協議和端點,那一個SVC文件就應該處理HTTP流量。

但是,這些選項不適用於非http協議,如netTcpBinding。在這種情況下,你需要在你的web.config中定義一個端點地址(可能是一個適當的基地址的相對路徑)。

+0

感謝您的回覆。 如果我沒有指定主機基地址,並且將WAS配置文件中的netTcpBinding端點的端點地址配置爲「/ tcp」,並將請求發送到net.tcp://localhost/MyService/Service.svc/tcp,請求似乎路由正確。另外,如果我從該配置生成代理,則客戶端地址將生成爲net.tcp://localhost/MyService/Service.svc/tcp(與以前相同的addr)。 這兩個因素似乎意味着WAS使用TCP綁定的協議和SVC文件路徑解析基地址。 – user364825 2010-06-23 19:49:18

+0

@ User364825:我的理解是,您需要在您的端點中擁有一個**完整的**地址,或者如果您想使用像「/ tcp」這樣的相對地址,您必須**擁有一個基地址 – 2010-06-24 05:00:56