10

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

Fabiano
  • 5,124
  • 6
  • 42
  • 69

2 Answers2

6

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

Stefan Egli
  • 17,398
  • 3
  • 54
  • 75
  • 4
    thanks for your reply. The includeExceptionDetailInFaults attribute only applies for exceptions that occur inside your OperationContract boundaries. issues during serialization occur outside these boundaries. Your second proposal might be a solution to log (but not handle) these issues. I will take a deeper look it. – Fabiano May 06 '10 at 11:17
  • 1
    Many thanks for the link. Logging helped me to find the problem. – vlaku Mar 13 '12 at 10:12
0

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.

Juan
  • 21
  • 1