我正在使用.net 3.5。和城堡2.5.2。
我有一个WCF网络服务。
我正在尝试构建一个使用castle的客户端(mvc 2.0网站)来注入代理。
所以我使用svcutil生成了一个代理。 我把代理放在我的客户网站上,并将其注册到容器中,如下所示:
container.Register(
Component.For<IMyWCFServiceProxy>()
.ImplementedBy<WCFServiceProxy>());
然后将代理接口注入我调用该服务的类中。 到目前为止都很好。
然而,当我在代理上调用web方法时,我得到了: “通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态。”
所以我想知道,当我向容器注册客户端代理时,是否必须添加更多信息。即与通道状态有关。我找不到有关设置客户端的任何文档。
非常感谢。
答案 0 :(得分: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