2011-08-20 52 views
4

我正在使用.net 3.5。和城堡2.5.2。WCF與Castle Windsor的Web服務客戶端

我有一個WCF的網絡服務。

我想建立一個客戶端(mvc 2.0網站),使用城堡,注入代理。

所以我使用svcutil生成了一個代理。 我把代理在我的客戶的網站,並用容器註冊它像這樣:

container.Register(
      Component.For<IMyWCFServiceProxy>() 
       .ImplementedBy<WCFServiceProxy>()); 

然後注入代理接口到類調用該服務。 迄今爲止都很好。

然而,當我呼籲代理我得到了Web方法: 「通信對象,System.ServiceModel.Channels.ServiceChannel,不能用於通信,因爲它是處於故障狀態。」

所以我想知道,當我向容器註冊客戶端代理時,是否需要添加更多信息?即與信道狀態有關。我找不到有關設置客戶端的任何文檔。

非常感謝。

+0

當您使用沒有Windsor容器的代理類時會發生什麼? – svick

+0

您好,非常感謝!我還沒有嘗試過。我今天晚些時候要登錄,所以會先做。我見過幾個例子,其中人們註冊代理 - 用ActAs(DefaultClientModel ...),然後在配置中引用端點名稱,我也會嘗試這個。謝謝 – Sean

回答

3

我的問題是我在註冊代理時遺漏了對終點的引用。這一服務變更後的現在的工作:

Component.For<IMyWCFServiceProxy>() 
       .ActAs(DefaultClientModel 
          .On(WcfEndpoint.FromConfiguration("wsHttpEndpoint"))). 
       ImplementedBy<MyWCFServiceProxy>()); 

雖然,我一直在讀這篇文章在週末,而像這個樣子。

http://favcode.net/browse/using_castle_dynamic_proxy_to_create_a_wcf_proxy_via_channelfactory

+0

你可以接受你自己的答案,因爲你解決了它 – Amy

+0

其中「wsHttpEndpoint」是web.config中端點的名稱屬性 – Sean