2011-01-14 58 views
2

我有了這個WCF服務合同(大量簡化,但要注意它在命名空間):如何在WCF端點的XML配置中指定協定的名稱空間?

namespace Foo.Services.BarService 
{ 
    [ServiceContract] 
    interface BarContract {... } 
} 

在我的app.config(客戶端),我配置了一些服務的端點:

<endpoint address="..." 
      binding="..." 
      contract="Foo.Services.BarService.BarContract" /> 

但是,這會導致錯誤,指出在支持BarService.BarContract的客戶端配置中找不到端點。我只能通過將contract屬性值更改爲BarService.BarContract(即通過刪除命名空間)來擺脫此錯誤。

這是爲什麼?這個錯誤從哪裏來?爲什麼我不能提到合同類型的名稱空間部分?在WCF中不應該找到匹配的端點?


回覆如下@Ladislav Mrnka的評論的問題:

  • 我說的客戶端。 (我忘了提及這一點;對此感到抱歉。) 這個錯誤可能來自服務器端嗎?

  • 我產生上述服務合同,與BarClient類,它實現它一起,通過Visual Studio的添加服務引用設施。我指定了由其他人運行的BarService的URL。這也是我指定該服務應放在Foo.Services.BarService名稱空間中的地方。

  • 我打算直接通過自動生成的BarClient類使用該服務,而不是通過ChannelFactory<BarContract>

+0

服務或客戶端配置是否存在問題?你是如何創建客戶的? – 2011-01-14 08:51:31

回答

3

通過創建客戶端添加服務引用不會重新從服務命名空間結構。所有創建的類型和合同都放入由服務引用名稱定義的新名稱空間中。所以我想你可以命名你的服務參考BarService。客戶端配置必須遵循生成的合同的名稱。

相關問題