2014-02-19 4 views
1

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

Мой вопрос здесь: если какое-либо исключение выбрано на сервере, я хочу уведомить клиента об исключении. Кроме того, я не хочу, чтобы служба была убита. Как мне это достичь?

Для примера: если база данных отключена, когда служба пытается получить доступ к этой БД, она выдает исключение. Я не обрабатывал эти исключения, используя try catch. Этот тип необработанных исключений заставляет мою службу WCF закрываться.

+1

Не могли бы вы опубликовать код, чтобы показать, как вы в настоящее время останавливаете свое обслуживание, когда вызывается Исключение? – MattC

ответ

2

Вы можете создать метод FaultContract для ваших методов службы WCF. Когда на сервере возникает исключение, вы можете выбросить исключение FaultException. Клиентская сторона может захватить это исключение FaultException и обработать его.

Я надеюсь, что эта ссылка полезна. http://www.codeproject.com/Articles/26320/WCF-Error-Handling-and-Fault-Conversion

1

У вас нет есть делать что угодно. Сервер не убивается, если возникает исключение. Клиент получит исключение.

Если вы хотите, вы можете добавить обработку ошибок с помощью интерфейса IErrorHandler, и вы должны использовать контракты на неисправности, чтобы клиенты знали, получают ли они ожидаемую или неожиданную ошибку. См. Здесь для получения более подробной информации: http://msdn.microsoft.com/en-us/library/gg281715%28v=vs.110%29.aspx

+0

fejesjoco: Я размещаю службу как службу Windows, и служба прекращается, если произошло исключение. – petchirajan

+0

Тогда это не ошибка WCF, а что-то еще. WCF ловит исключения в сервисах, поэтому это не может быть причиной. – fejesjoco

+0

fejesjoco: Я обработал исключение в сервисе, используя Try..Catch, и из блока catch я бросаю FaultException, чтобы уведомить клиента. Спасибо за вашу помощь. – petchirajan

Смежные вопросы