Как отследить проблемы / исключения сериализации WCF

Я иногда сталкиваюсь с проблемой, что исключение приложения выдается во время сериализации WCF (после возврата DataContract из моего OperationContract). Единственное (и менее значимое) сообщение, которое я получаю, это

System.ServiceModel.CommunicationException: базовое соединение было закрыто: соединение было неожиданно закрыто.

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

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

благодарю вас

2 ответа

Решение

Вы должны получить внутреннее исключение, если вы настроите свое поведение службы следующим образом:

<system.serviceModel>
     <behaviors>
         <serviceBehaviors>
               <behavior name="YourServiceBehaviour">
                   ...
                   <serviceDebug includeExceptionDetailInFaults="true" />
                   ...
               </behavior>
         </serviceBehaviors>
     </behaviors>
</system.serviceModel>

Дополнительно вы можете включить трассировку. Не нашел хорошую статью сейчас, но, возможно, это поможет вам начать:

http://developers.de/blogs/damir_dobric/archive/2009/03/24/using-of-wcf-trace.aspx

У меня была эта проблема, и это была проблема сериализации... иногда я отправлял DataTable без какого-либо столбца, в этом случае канал просто закрывался без каких-либо ошибок или трассировки.

Другие вопросы по тегам