2010-05-06 9 views
8

Occasionalmente mi imbatto nel problema che un'eccezione dell'applicazione viene generata durante la serializzazione WCF (dopo aver restituito un DataContract dal mio OperationContract). L'unica (e meno meaningfull) messaggio che ottengo èCome rintracciare i problemi/le eccezioni di serializzazione WCF

System.ServiceModel.CommunicationException : la connessione sottostante chiuso: la connessione è stata chiusa inaspettatamente.

senza alcuna intuizione per l'eccezione interna, il che rende davvero difficile scoprire cosa ha causato l'errore durante la serializzazione.

Qualcuno conosce bene come è possibile tracciare, registrare ed eseguire il debug di queste eccezioni? O ancora meglio posso rilevare l'eccezione, gestirli e inviare un FaulMessage definito al client?

ringraziamento

risposta

5

Si dovrebbe ottenere l'eccezione interna se si configura il comportamento servizio come questo:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
       <behavior name="YourServiceBehaviour"> 
        ... 
        <serviceDebug includeExceptionDetailInFaults="true" /> 
        ... 
       </behavior> 
     </serviceBehaviors> 
    </behaviors> 
</system.serviceModel> 

Inoltre è possibile attivare l'analisi. Non hai trovato un buon articolo ora, ma forse questo è una buona partenza:

http://developers.de/blogs/damir_dobric/archive/2009/03/24/using-of-wcf-trace.aspx

+4

grazie per la vostra risposta. L'attributo includeExceptionDetailInFaults si applica solo alle eccezioni che si verificano all'interno dei limiti OperationContract. i problemi durante la serializzazione si verificano al di fuori di questi limiti. La tua seconda proposta potrebbe essere una soluzione per registrare (ma non gestire) questi problemi. Darò un'occhiata più profonda. – Fabiano

+0

Mille grazie per il collegamento. La registrazione mi ha aiutato a trovare il problema. – Walkor

0

ho avuto quel problema, ed è stato un problema di serializzazione ... a volte mi è stato l'invio di un DataTable senza montanti, in quel caso il canale si è appena chiuso senza errori o tracce.

Problemi correlati