开发者

ServiceStack: how to deal with errors?

开发者 https://www.devze.com 2023-02-04 01:19 出处:网络
I\'m using ServiceStack with great results so far, except that dealing with errors is seemingly tricky. If something goes wrong during serialization of a message (because I forgot to add a default con

I'm using ServiceStack with great results so far, except that dealing with errors is seemingly tricky. If something goes wrong during serialization of a message (because I forgot to add a default constructor to the message for example) all the client gets back is a message that the server had an internal error and a status code of 500. Adding a listener to the HttpApplication.Error event in the Global.asax doesn't work as it never gets hit. Neither does Application_Error. Not only is this insufficient for end user scenarios, it makes debugging these errors very cumbersome as the only way to find out what went wrong is this ugly expression in the Quick Watch:

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

What I'd like is catch any and all errors on the server side (be it serialization by ServiceStack, or errors on my services) and add the required information to an Errors collection that all my message types hav开发者_高级运维e.


See ServiceStack's Validation and Error handling wiki page for more details about error handling and validation in ServiceStack.

At the moment there is no way to handle a serialization exception with Custom logic (although I will now add that on the TODO list :).

If your Response DTO has a ResponseStatus property (i.e. or inherits from IHasResponseStatus), ServiceStack should automatically serialize your exception.

To also get it to serialize your StackTrace set DebugMode to true with SetConfig() in your AppHost.Configure() onload script.

0

精彩评论

暂无评论...
验证码 换一张
取 消