2012-04-11 2 views
3

Кто-нибудь знает способ создания слушателя для прокси-сервера, чтобы при изменении CommunicationState я могу вызвать действие или метод?CommunicationState слушатель?

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

Редактировать

Может еще некоторый контекст здесь.

InstanceContext context = new InstanceContext(this); 
Subscriber = new SubscriptionService.MySubscriptionServiceClient(context); 
Subscriber.Subscribe(""); 

Поэтому в основном я хочу знать, когда услуга подписка остановлена, так что я могу попытаться восстановить каждые 60 секунд или около того. Я пробовал искать событие в службе подписчика, но ничего не видел. Нужно ли мне что-то реализовать в конце обслуживания?

Благодаря

+1

Пожалуйста, не префикс своих названий с «C# WCF» и такой , Для этого нужны теги. –

+0

Хорошо ... есть ли какая-то особая причина? Было бы неплохо, если бы вы указали вместо того, чтобы просто делать заявление. – meanbunny

+0

Потому что «для чего предназначены теги». –

ответ

1

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

(Для справки, вы можете также использовать аналогичный образ с именем событие на ChannelFactory<TChannel> при создании каналов связи в коде, а не использовать сгенерированные прокси.)

+0

Спасибо. Я смог успешно зафиксировать событие Faulted и переподключить клиентов к сервису. Это работает безупречно! – meanbunny

+0

Добро пожаловать :) – Alan