到目前为止,我使用 ServiceStack 取得了很好的效果,只是处理错误似乎很棘手。如果在消息序列化期间出现问题(例如,因为我忘记向消息添加默认构造函数),则客户端返回的所有消息都是服务器有内部错误且状态代码为 500 的消息。这HttpApplication.Error
Global.asax 中的事件不起作用,因为它永远不会被击中。也不Application_Error
。这不仅对于最终用户场景来说是不够的,而且还使得调试这些错误变得非常麻烦,因为找出问题所在的唯一方法是快速观察中的这个丑陋的表达式:
Encoding.Default.GetString( ((System.IO.MemoryStream)((SyncMemoryStream)((System.Net.HttpWebResponse)(((WebException)ex).Response)).ResponseStream))._buffer)
我想要的是捕获服务器端的所有错误(无论是 ServiceStack 的序列化,还是我的服务上的错误)并将所需的信息添加到Errors
我所有消息类型都有的集合。
参见ServiceStack验证和错误处理 https://github.com/ServiceStack/ServiceStack/wiki/Validation有关 ServiceStack 中错误处理和验证的更多详细信息,请访问 wiki 页面。
目前无法使用自定义逻辑处理序列化异常(尽管我现在将其添加到 TODO 列表中:)。
如果您的 Response DTO 有响应状态属性(即或继承自 IHasResponseStatus),ServiceStack 应该自动序列化您的异常。
还可以让它序列化您的 StackTrace 集调试模式在 AppHost.Configure() onload 脚本中使用 SetConfig() 设置为 true。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)