2015-11-04 38 views
1

今天我開始鑽研WCF。我參加了教程https://msdn.microsoft.com/en-us/library/ms734712(v=vs.110).aspxWCF基地址被App.config覆蓋

我一直走過本教程,直到您託管服務主機。教程段here告訴我啓動該服務,然後導航到代碼中指定的uri。當我這樣做時,我的聯繫被拒絕了。經過一段時間,我發現基本地址在app.config中被指定爲完全別的東西。導航到該URI後跟端點名稱將我帶到了我想去的地方。我不知道這個地址是如何產生的,並不是真的在乎那麼多。我更感興趣的是在服務上設置基本URI的目的是什麼,當它似乎沒有任何作用時,使用的實際基本URI來自app.config。它是ServiceHost類型的構造函數所要求的...所以你會認爲它很重要。誰可以給我解釋一下這個?

回答

1

如果仔細查看期望使用Uris的ServiceHost的兩個構造函數,則Uri參數的前綴爲params

在C#中,這意味着您可以傳遞儘可能多的Uris,包括零。

如果您想使用app.config,則不傳遞Uri很有趣。

如果你沒有配置,你傳遞一個類型或對象和一些Uris。
然後WCF創建一個服務,在所有Uris上公開服務的所有接口。

例如,如果你已經在你的服務有兩個接口,您撥打:

var host = new ServiceHost(typeof(HelloService), 
         "net.tcp://localhost:7000/service1", 
         "net.pipe://localhost:8000/service1", 
         "http://localhost:9000/service1"); 

你會得到的2x3暴露端點

大部分時間ServiceHost都無需提供地址建。

配置是用XML編寫的。

Regards

+0

我想知道如果這是在沒有app.config存在的情況下。看起來像那是你的意思。 –

+0

其實你可以從純淨的.net代碼中完全沒有Xml的所有配置。您還可以混合使用這些方法來進行一些基本配置和一些動態配置 –