我想根据客户端的应用程序配置文件中的自定义信息动态更改从我的客户端调用的WCF服务的地址 .
我的第一次尝试是创建 endpoints 行为,并实现 IEndpointBehavior.Validate
方法,实现如下所示:
void IEndpointBehavior.Validate(ServiceEndpoint endpoint)
{
... endpoint.Address = new EndpointAddress(...);
}
在客户端尝试连接之前调用此方法,并且该方法似乎成功更改了 endpoints 地址 . 但是,WCF基础结构似乎仍尝试使用原始地址进行连接 .
有没有办法使用 endpoints 行为或其他一些WCF扩展点来实现这一点?
1 回答
我认为问题是CommunicationObject的基本功能 . 当通信对象移动到Opened状态时,它不能改变任何东西 . 因此,如果您的通信对象(Channel或ChannelFactory)已处于Opened状态,则无法更改地址 .