ServiceStack: come affrontare gli errori?
-
11-10-2019 - |
Domanda
Sto usando ServiceStack con ottimi risultati fino ad ora, se non che fare con gli errori è apparentemente difficile. Se qualcosa va storto durante la serializzazione di un messaggio (perché ho dimenticato di aggiungere un costruttore di default per il messaggio, per esempio) tutto il cliente torna è un messaggio che il server ha avuto un errore interno e un codice di stato di 500. L'aggiunta di un listener per l'evento HttpApplication.Error
nel Global.asax non funziona in quanto non viene mai successo. Nemmeno Application_Error
. Non solo questo è sufficiente per gli scenari di utente finale, fa il debug di questi errori molto ingombrante come l'unico modo per scoprire cosa è andato storto è questa brutta espressione nel Controllo immediato:
Encoding.Default.GetString( ((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer)
Quello che mi piacerebbe è catturare qualsiasi e tutti gli errori sul lato server (che si tratti di serializzazione da ServiceStack, o gli errori sui miei servizi) e aggiungere le informazioni necessarie per una collezione Errors
che tutti i miei tipi di messaggi hanno.
Soluzione
Validazione e Gestione degli errori pagina wiki per ulteriori dettagli su gestione degli errori e convalida in ServiceStack.
Al momento non v'è alcun modo per gestire un'eccezione serializzazione con logica personalizzata (anche se io ora aggiungere che nella lista TODO:).
Se il DTO Response ha un ResponseStatus di proprietà (vale a dire o eredita da IHasResponseStatus), ServiceStack devono serializzare automaticamente l'eccezione.
Per farlo anche serializzare il set StackTrace DebugMode per vero con SetConfig () nel vostro AppHost.Configure () onLoad script.