使用行为动态更改WCF端点地址

时间:2010-09-15 18:20:36

标签: wcf wcf-client

我想根据客户端应用程序配置文件中的自定义信息动态更改从客户端调用的WCF服务的地址。

我的第一次尝试是创建端点行为,并实现IEndpointBehavior.Validate方法,实现如下所示:

void IEndpointBehavior.Validate(ServiceEndpoint endpoint)
{
    ... endpoint.Address = new EndpointAddress(...);
}

在客户端尝试连接之前调用此方法,并且该方法似乎成功更改了端点地址。但是,WCF基础结构似乎仍尝试使用原始地址进行连接。

有没有办法使用端点行为或其他一些WCF扩展点来实现这一点?

1 个答案:

答案 0 :(得分:2)

我认为问题是CommunicationObject的基本功能。当通信对象移动到Opened状态时,它不能改变任何东西。因此,如果您的通信对象(Channel或ChannelFactory)已处于Opened状态,则无法更改地址。