ServiceStack:如何处理错误?

时间:2011-01-14 14:53:17

标签: c# .net error-handling servicestack

到目前为止,我正在使用ServiceStack取得了很好的效果,除了处理错误似乎很棘手。如果在序列化消息期间出现问题(因为我忘了在消息中添加默认构造函数),所有客户端都会返回一条消息,表明服务器有内部错误,状态代码为500.添加一个监听器Global.asax中的HttpApplication.Error事件不起作用,因为它永远不会被击中。 Application_Error也没有。这不仅不适合最终用户场景,它使调试这些错误非常麻烦,因为找出错误的唯一方法是快速监视中的这种丑陋表达:

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

我想要的是捕获服务器端的任何和所有错误(无论是ServiceStack的序列化,还是我的服务上的错误),并将所需信息添加到我所有消息类型都有的Errors集合中。

1 个答案:

答案 0 :(得分:11)

有关ServiceStack中错误处理和验证的更多详细信息,请参阅ServiceStack的Validation and Error handling wiki页面。

目前无法使用自定义逻辑处理序列化异常(尽管我现在将其添加到TODO列表中:)。

如果您的Response DTO具有 ResponseStatus 属性(即或继承自IHasResponseStatus),ServiceStack应自动序列化您的异常。

还要使用AppHost.Configure()onload脚本中的SetConfig()将StackTrace集 DebugMode 序列化为true。