2012-04-02 104 views
0

我正在創建一個WCF服務。起初我有一個WCF服務庫項目和一個引用這個庫的控制檯項目。當我在客戶端項目中使用「添加服務引用」時,只要服務庫具有有效的App.Config文件,它就可以正常工作。是否可以使用「添加服務引用」選項在WCF中添加自託管服務?

但是,現在我想將服務庫和控制檯主機合併到一個控制檯項目中。畢竟,以前的控制檯項目非常簡單。但是問題在於:當我選擇「添加服務引用」並給出我在新控制檯項目的App.config文件中定義的端點時,它找不到任何服務引用。我認爲這是因爲當添加服務引用函數打開時(我認爲它是有意義的),服務將不會由wcfsvchost.exe承載。但我想不出一個辦法讓它工作。那麼,如果我的服務是一個單一的控制檯託管項目,我該如何添加服務引用?

+0

**當然是!**你爲什麼問?該服務需要啓動並運行 - 那麼您絕對可以爲該服務執行「添加服務引用」。畢竟:它只是一個WCF服務 - 它的託管方式與客戶端調用它無關...... – 2012-04-02 08:22:06

+0

@marc_s謝謝。我忘了提及一件事:我試着用我原來的服務庫「添加服務引用」(以便wcfsvchost將使這個服務運行),它與我的組合控制檯具有完全相同的文件和app.config。但是當我卸載這個庫並運行組合控制檯時(我假設這兩個服務將是相同的,這樣以前生成的服務引用也可以用於新的服務引用),我的客戶端說「找不到端點」。我想這是因爲我需要使用生成的服務引用來更改某些內容,但它們究竟是什麼? – tete 2012-04-02 08:48:32

回答

0

最簡單的方法是運行WCF服務,生成服務引用,然後將其合併到單個應用程序中。您只需更改app.config中的地址即可。但要小心,因爲您應該更改客戶端部分的地址,而不是app.config的服務器部分。

但是,當您決定更改服務數據合同並重新生成服務參考時,這種方法在將來很難維護。您可能需要考慮以下事項:將服務引用包裝到程序集中,然後使用程序集。這樣,您將能夠在需要時重新生成服務參考。

+0

感謝您的幫助。你能更具體地說我應該做些什麼來改變「app.config中的地址」?因爲我嘗試了從我的服務庫生成的服務引用,它基本上使用與我的組合控制檯項目相同的設置。但是當我運行組合控制檯時(我卸載了服務庫,所以wcfsvchost.exe不會託管這個版本),它應該提供與服務庫完全相同的服務,我的客戶端說沒有找到端點。我猜測這是因爲有些不同,我需要改變。但我只是不知道什麼 – tete 2012-04-02 08:43:58

+0

@tete你可以在問題中發佈你的組合app.config?您可以刪除敏感信息。也可能是您在WCF服務啓動並運行之前發送請求的情況 – 2012-04-02 08:46:06

+0

當然,請參閱我的原始帖子更新。 – tete 2012-04-02 08:49:45

相關問題