Sviluppare servizi basati sull'Open Data Protocol è un'operazione piuttosto veloce grazie agli strumenti messi a disposizione del .NET Framework 3.5. Basta infatti preparare la classe DataService<T> ed indicare il tipo da esporre, sia esso un ObjectContext di LINQ to Entities, sia un oggetto personalizzato come si è visto nello script #173.

Purtroppo in casi di errore è difficile capirne la causa poiché si riceve un errore generico HTML, soprattutto se si è sbagliato qualcosa nella definizione del servizio, degli attributi e non solo in caso di errori di accesso al database o simili. Per avere quindi la possibilità di effettuare una diagnostica migliore occorre prima di tutto impostare a true la proprietà UseVerboseErrors dell'oggetto IDataServiceConfiguration di configurazione del servizio. In secondo luogo, poiché si tratta di fatto di un servizio WCF, occorre abilitare l'opzione IncludeExceptionDetailInFaults tramite l'apposito behavior. Purtroppo però i WCF Data Services sono autoconfiguranti e abilitare questa opzione richiede obbligatoriamente l'uso dell'attributo ServiceBehavior.

Nell'esempio successivo è possibile vedere quindi come impostare entrambe le proprietà.

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]   
public class ProductsService : DataService<Products>
{
  public static void InitializeService(IDataServiceConfiguration config)
  {
    config.UseVerboseErrors = true;
    config.SetEntitySetAccessRule("All", EntitySetRights.AllRead);
  }
}

In questo modo è possibile poi vedere l'intera descrizione dell'errore, comprensiva dello stack trace, nella pagina HTML restituita dal servizio.

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