Как отследить проблемы / исключения сериализации WCF - PullRequest
9 голосов
/ 06 мая 2010

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

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

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

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

спасибо

Ответы [ 2 ]

5 голосов
/ 06 мая 2010

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

<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

0 голосов
/ 16 сентября 2010

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

...