7

到目前为止,我使用 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我所有消息类型都具有的集合中。

4

1 回答 1

11

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

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

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

要让它序列化您的 StackTrace ,请在 AppHost.Configure() onload 脚本中使用 SetConfig() 将 DebugMode 设置为 true

于 2011-01-25T13:47:23.037 回答