c# - ServiceStack:如何处理错误?

标签 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 集合中消息类型有。

最佳答案

参见 ServiceStack 的 Validation and Error handling有关 ServiceStack 中的错误处理和验证的更多详细信息的维基页面。

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

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

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

关于c# - ServiceStack:如何处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4692313/

相关文章:

c# - RazorEngine Razor.Parse(...) 抛出有关 ServiceStack 和 Markdown 的异常?

c# - StructureMap 中的 AddConcreteType 和 TheDefaultIsConcreteType 有什么区别?

symfony - 如何在Symfony 4中启用生产模式?

c# - 在 C# 中将数组作为参数传递

c# - 第三人称相机的 y 轴未正确围绕玩家呈球形 - 逻辑问题?

c# - 如果有文件路径,如何将文件保存在SQL Server数据库中?

.net - 从 .NET Visual Fox Pro 驱动程序在 DBF 文件中插入浮点值

magento - 无效的配置字段后端模型: adminhtml/system_config_backend_web_secure_offloaderheader

php - 如何使用简单的格式制作zf2输出错误?

c# - 从一个位置拍摄的几张图像制作全景图像