I occasionally run into the problem that an application exception is thrown during the WCF-serialization (after returning a DataContract from my OperationContract). The only (and less meaningfull) message I get is
System.ServiceModel.CommunicationException
: The underlying connection was
closed: The connection was closed
unexpectedly.
without any insight to the inner exception, which makes it really hard to find out what caused the error during serialization.
Does someone know a good way how you can trace, log and debug these exceptions? Or even better can I catch the exception, handle them and send a defined FaulMessage to the client?
thank you
You should get the inner exception if you configure your service behavior like this:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="YourServiceBehaviour">
...
<serviceDebug includeExceptionDetailInFaults="true" />
...
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Additionally you can enable tracing. Did not find a good article now, but maybe this gets you started:
http://developers.de/blogs/damir_dobric/archive/2009/03/24/using-of-wcf-trace.aspx
I had that problem, and it was a serialization issue... sometimes I was sending a DataTable without any column, in that case the channel just closed without any error or trace.