Visualizzare messaggi di errore estesi in ADO.NET Data Services

di Alessio Leoncini, in Silverlight 2.0,

Durante lo sviluppo dei servizi di accesso ai dati con ADO.NET Data Services possono verificarsi molti casi in cui il codice vada in errore e siano sollevate eccezioni. Principalmente per motivi di sicurezza il servizio non distribuisce al client dettagliati messaggi di errore ma si limita a restituire il seguente XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
  <code></code>
  <message xml:lang="en-US">An error occurred while processing this request.</message>
</error>
Per semplificare il debug questo comportamento può essere modificato in modo che sia restituito un completo set di informazioni dell'eccezione sollevata, compreso lo stacktrace. E' sufficiente valorizzare la proprietà UseVerboseErrors a True dell'oggetto IDataServiceConfiguration parametro del metodo di inizializzazione del servizio:

public class MyDataService : DataService<MyDataProvider>
{
    public static void InitializeService(IDataServiceConfiguration config)
    {
        config.UseVerboseErrors = true;
    }
}

Qualora sia il servizio stesso ad avere problemi di inizializzazione, nei casi ad esempio di limitazioni per policy di sicurezza, per avere un messaggio di errore esteso è necessario agire sul file di configurazione attivando la specifica opzione attraverso un behavior:

<system.serviceModel>
  <services>
    <service name="WebApplication1.MyDataService"  behaviorConfiguration="IncludeExceptionBh"></service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="IncludeExceptionBh">
        <serviceDebug includeExceptionDetailInFaults="True"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
oppure decorando la classe del servizio con lo specifico attributo:

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 
public class MyDataService : DataService<MyDataProvider>
//..

Attivando i messaggi di errore estesi sarà molto più semplice effettuare il debug di quei meri errori che possono verificarsi durante lo sviluppo.

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi