Как отследить проблемы / исключения сериализации 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 без какого-либо столбца, в этом случае канал просто закрывался без каких-либо ошибок или трассировки.