2011-01-14 2 views
7

Ich verwende ServiceStack mit großartigen Ergebnissen bisher, außer dass der Umgang mit Fehlern scheinbar schwierig ist. Wenn während der Serialisierung einer Nachricht etwas schief geht (weil ich beispielsweise vergessen habe, der Nachricht einen Standardkonstruktor hinzuzufügen), erhalten alle Clients eine Nachricht, dass der Server einen internen Fehler und einen Statuscode von 500 hat. Hinzufügen eines Listeners zu Das Ereignis HttpApplication.Error in Global.asax funktioniert nicht, da es nie getroffen wird. Auch nicht Application_Error. Dies ist nicht nur unzureichend für Endanwender Szenarien, macht es diese Fehler sehr mühsam, da der einzige Weg, das Debuggen, um herauszufinden, was falsch gelaufen ist dieses hässliche Ausdruck in der Schnell Watch:ServiceStack: Wie man mit Fehlern umgeht?

Encoding.Default.GetString(((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer) 

Was würde Ich mag es, fangen Alle Fehler auf der Serverseite (sei es Serialisierung durch ServiceStack oder Fehler in meinen Diensten) und die erforderlichen Informationen zu einer Errors Sammlung hinzufügen, die alle meine Nachrichtentypen haben.

+0

Was ist ServiceStack? –

+0

http://www.servicestack.net/ – JulianR

Antwort

11

Weitere Informationen zur Fehlerbehandlung und Validierung in ServiceStack finden Sie auf der Wiki-Seite Validation and Error handling von ServiceStack.

Momentan gibt es keine Möglichkeit, eine Serialisierungsausnahme mit benutzerdefinierter Logik zu behandeln (obwohl ich das jetzt in der TODO-Liste hinzufügen werde :).

Wenn Ihr Antwort-DTO über eine ResponseStatus-Eigenschaft verfügt (d. H. Oder von IHasResponseStatus erbt), sollte ServiceStack Ihre Ausnahme automatisch serialisieren.

Um es auch zu erhalten, um Ihre StackTrace Set DebugMode auf True mit SetConfig() in Ihrem AppHost.Configure() Onload-Skript zu serialisieren.