2013-11-24 72 views
0

在我的VS解決方案中,我創建了一個控制檯項目,我將其用作客戶端,併爲WCF服務創建一個空項目。WCF - 應用程序使用客戶端的app.config而不是WCF服務的app.config

然後我創建了WCF服務(創建了我的合同和服務類型並手動構建了app.config),並在客戶端項目中添加了對WCF服務項目的引用。

但是,當我在客戶端中調用ServiceHost.Open()時,端點未加載。我最終確定我需要將所有配置信息放在客戶端的app.config中,而不是服務的app.config中。

我不確定這是否正常,或者我做錯了什麼。在過去,當我使用WCF項目模板時,情況並非如此。

+0

該配置取自HOST PROCESS的配置文件,即如果您在ASP.NET站點中承載WCF服務,則該配置來自web.config。這是很多人感到困惑的地方:如果你有一個class-lib程序集,它有一些配置,它不會是.NET配置文件的源。因此,請在您的Web應用程序(如果您使用ASP託管)和控制檯客戶端的app.config中查找服務器配置。 你爲什麼要在客戶端上調用Host.Open()? –

+0

謝謝。我沒有意識到這一點。我正在通過「Windows Communication Foundation Unleashed」工作,但我還沒有生成元數據,所以我只是使用ServiceHost來確認一切正常加載。我想先解決這個問題。 –

回答

0

是的,這是正常的。每個.NET應用程序(客戶端,服務,網站等)都有自己的配置文件。確切地說,它們有一個層次結構,但該層次結構的底端對應用程序是唯一的。

如果您仔細考慮,這是有道理的 - 客戶端需要聯繫服務以詢問其配置,但它需要知道端點信息才能嘗試這樣做。所以是的,正常的過程是客戶端和服務在它們的配置文件中都有非常相似的信息。

如果您使用Visual Studio的內置工具來爲您執行所有操作,那麼當您向該項目添加服務引用時,它將自動爲您的客戶端創建和/或編輯配置文件,從元數據終端複製WCF爲此目的而暴露。或者,您可以使用WCF配置編輯器工具來編輯您的客戶端應用程序。

另外,請注意,沒有什麼實際上強制您的客戶端和服務器具有兼容設置;例如您可以在一邊更改許多緩衝區/圖形/等的最大大小,而不是另一邊,並看到一些奇怪的行爲。您需要確保兩端都使用相互可用的設置。

+0

感謝您的信息。隨着你的解釋,這是非常有意義的。在過去,我使用了Visual Studio的內置工具。我想更深入地瞭解配置的構建方式以及這種性質。如果我沒有手動完成所有這些工作,我就不會傾斜所有這些:)。 –

+0

沒問題。請記住將最有幫助的答案標記爲「已接受」,以保證網站順利運行:) –

相關問題