Как изменить адрес канала из ChannelFactory (WCF) - PullRequest
2 голосов
/ 06 марта 2011

Я пытаюсь создать смарт-прокси, поэтому, если вызов на один адрес не работает, прокси автоматически переходит на второй адрес. Для этого я использую Unity с ChannelFactory. Я могу перехватить вызовы на канале, которые я получаю с ChannelFactory.CreateChannel(), но не могу сказать, чтобы мой канал закрылся и указал новый адрес.

Я не хочу заново создавать канал, я просто хочу перенастроить его. Является ли это возможным? Я не могу сделать это с IChannel, ICommunicationObject или IClientChannel ... Я могу получить адрес только для чтения, но не изменить его.

(я знаю, что это возможно с маршрутизаторами WCF, но я пытаюсь устранить единственную точку отказа маршрутизатора).

1 Ответ

2 голосов
/ 06 марта 2011

Получив канал, вы не сможете изменить его адрес позже, но когда вы создаете канал на своем заводе, вы можете указать адрес конечной точки для использования:

public TChannel CreateChannel(EndpointAddress address)

Дополнительные сведения см. В документации MSDN для метода CreateChannel .

Так что вы можете сделать что-то вроде этого:

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

Если вы хотите изменить его, вам просто нужно создать новый экземпляр канала на вашем заводе и указать другой адрес конечной точки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...