如何从ChannelFactory(WCF)更改通道的地址

时间:2011-03-06 15:00:20

标签: wcf

我正在尝试创建智能代理,因此如果对一个地址的调用不起作用,代理会自动转到第二个地址。为此,我使用Unity ChannelFactory。我能够拦截从ChannelFactory.CreateChannel()返回的频道上的呼叫,但我无法告诉我的频道关闭并指向新地址。

我不想重新创建频道,我只想重新配置它。可能吗?我无法使用IChannelICommunicationObjectIClientChannel执行此操作...我只能将地址设为只读但不能更改。

(我知道WCF路由器可以实现这一点,但我正在尝试解决路由器的单点故障)。

1 个答案:

答案 0 :(得分:2)

有了频道后,您无法在以后更改其地址 - 但是当您从工厂创建频道时,您可以提供要使用的端点地址:

public TChannel CreateChannel(EndpointAddress address)

有关详细信息,请参阅MSDN docs for the CreateChannel method

所以你可以这样做:

EndpointAddress addr = new EndpointAddress("http://yourserver:7777/YourService");    
IYourService client = factory.CreateChannel(addr);

如果要更改它,只需要从工厂创建一个新的通道实例,并指定一个不同的端点地址。