我正在尝试创建智能代理,因此如果对一个地址的调用不起作用,代理会自动转到第二个地址。为此,我使用Unity ChannelFactory
。我能够拦截从ChannelFactory.CreateChannel()
返回的频道上的呼叫,但我无法告诉我的频道关闭并指向新地址。
我不想重新创建频道,我只想重新配置它。可能吗?我无法使用IChannel
,ICommunicationObject
或IClientChannel
执行此操作...我只能将地址设为只读但不能更改。
(我知道WCF路由器可以实现这一点,但我正在尝试解决路由器的单点故障)。
答案 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);
如果要更改它,只需要从工厂创建一个新的通道实例,并指定一个不同的端点地址。