Служба WCF C # выдает ошибку, но продолжает - PullRequest
1 голос
/ 15 октября 2010

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

Ответы [ 2 ]

0 голосов
/ 15 октября 2010

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

Таким образом, в поведении WCF по умолчанию каждый запрос получаетсовершенно новый экземпляр вашего класса обслуживания, который затем обрабатывает запрос и завершает работу, независимо от того, происходит исключение или нет.Возможная проблема с исключением - если вы позволите ему вернуться обратно к вашему клиенту «без фильтрации», то канал (канал связи между вашим клиентом и сервером) может быть «неисправен» и, таким образом, непригоден для использования.

Если вы включите все исключения службы в FaultException или FaultException<T>, тогда ваш канал между клиентом и сервером должен быть в порядке.Чтобы перехватить все возможные ошибки на сервере, проверьте реализацию интерфейса IErrorHandler в классе обслуживания.

0 голосов
/ 15 октября 2010

Что за необработанное исключение?Если исключение не является завершающим исключением (переполнение стека или тому подобное), ServiceHost должен продолжать отвечать на последующие запросы.

...