【问题标题】:ServiceStack: how to deal with errors?ServiceStack:如何处理错误?
【发布时间】:2011-06-09 04:53:24
【问题描述】:

到目前为止,我使用 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 集合中。

【问题讨论】:

    标签: c# .net error-handling servicestack


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多