Динамически изменять адрес конечной точки WCF, используя поведение - PullRequest
2 голосов
/ 15 сентября 2010

Я хочу динамически изменить адрес службы WCF, вызываемой из моего клиента, на основе пользовательской информации в файле конфигурации приложения клиента.

Моей первой попыткой было создание поведения конечной точки и реализация метода IEndpointBehavior.Validate, реализованного примерно так:

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

Этот метод вызывается до того, как клиент пытается подключиться, и, по-видимому, успешно меняет адрес конечной точки. Однако инфраструктура WCF все еще пытается установить соединение с использованием исходного адреса.

Есть ли способ достичь этого, используя поведение конечной точки или какую-либо другую точку расширения WCF?

1 Ответ

2 голосов
/ 15 сентября 2010

Я думаю, что проблема в базовой функциональности CommunicationObject.Когда объект связи переходит в открытое состояние, он ничего не может изменить.Поэтому, если ваш объект связи (Channel или ChannelFactory) уже находится в открытом состоянии, вы не можете изменить адрес.

...