Я иногда сталкиваюсь с проблемой, что исключение приложения выдается во время WCF-сериализации (после возврата DataContract от моего OperationContract). Единственное (и менее многозначительный) сообщение, которое я получаю,
Система. ServiceModel. CommunicationException: базовое соединение было закрыто: соединение было неожиданно закрыто.
без любого понимания к внутреннему исключению, которое делает его действительно трудно для обнаружения то, что вызвало ошибку во время сериализации.
Кто-то знает хороший путь, как можно проследить, зарегистрировать и отладить эти исключения? Или еще лучше я могу поймать исключение, обработать их и отправить определенный FaulMessage клиенту?
спасибо
Вы должны получить внутреннее исключение, если настроите поведение службы следующим образом:
<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