2013-04-05 62 views
8

WCF中的服務主機如何與來自web.config或app.config的配置交互。當我創建服務主機時,我只在服務主機構造函數和服務的類中指定一個url。app.config或web.config中的配置與WCF中的代碼之間的關係

但在app.config或web.config中,我有另一個端點列表,每個列表都有自己特定的網址。那麼wcf如何處理這種情況呢?從app.config或web.config獲取哪個端點?

+0

我編輯了自己的冠軍specifing在代碼或配置您的ADRESS的特點,而且其Dependance的。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2013-04-05 07:53:40

回答

2

端點地址相對於服務主機的基地址。例如,如果你有這些端點:

<service name="MyService"> 
    <endpoint address="" binding="ws2007HttpBinding" contract="IMyService" /> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
</service> 

http://localhost:7777服務主機URL,那麼你將是對http://localhost:7777暴露你的服務,並在http://localhost:7777/mex的元數據。

+0

我的例子需要第二個端點,所以我選擇了一個無害的端點。如果您希望客戶端能夠使用'svcutil.exe'而無需爲WSDL執行HTTP GET,則只需要公開MEX端點。我不打擾MEX自己,我的服務行爲中只有''。 – 2013-04-05 08:01:14

1

因此,一般來說,您的交互取決於幾個因素 - 您的環境,您的代碼以及您的網絡或應用程序設置。

根據MSDN(http://msdn.microsoft.com/en-us/library/ms733749.aspx):有兩種方法可以指定WCF中服務的端點地址。您可以爲與服務關聯的每個端點指定絕對地址,也可以爲服務的ServiceHost提供基地址,然後爲與此基地址相關的此服務關聯的每個端點指定一個地址。您可以使用這些過程中的每一個來指定配置或代碼中服務的端點地址。如果您未指定相對地址,則該服務將使用基地址。

此外,您還必須注意您的託管環境。例如,IIS本身爲端點生成您的基地址(即使它在配置中指定),同時在自主機中從配置中讀取它。

上面的鏈接大大描述了你的主機環境

相關問題