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
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare HiLo per ottimizzare le insert in un database con Entity Framework
Eseguire una GroupBy per entity in Entity Framework
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Le novità di Entity Framework 8
Utilizzare la libreria Benchmark.NET per misurare le performance