需要ResponseStatus吗?
wiki说我们需要在响应DTO中有一个ResponseStatus属性来处理异常序列化:
https://github.com/ServiceStack/ServiceStack/wiki/Validation
然而,即使响应DTO中没有ResponseStatus属性,看起来也会自动生成ResponseStatus。
我们需要ResponseStatus属性吗?
答案 0 :(得分:12)
Error Handling Docs解释了如何控制哪些服务返回已填充的ResponseStatus
DTO,即:
抛出异常时返回的错误响应取决于是否存在常规命名的{RequestDto}Response
DTO。
无论服务方法的响应类型如何,都会返回{RequestDto}Response
。如果{RequestDto}Response
DTO具有 ResponseStatus 属性,则会填充该属性,否则将不会返回 ResponseStatus 。 (如果您使用{ResponseDto}Response
属性修饰了[DataContract]/[DataMember]
类和属性,那么 ResponseStatus 也需要进行修饰,以便填充。
通过填充 ResponseStatus 属性返回通用ErrorResponse
。
Service Clients透明地处理不同的错误响应类型,对于无模式格式(如JSON / JSV / etc),在自定义或通用中返回 ResponseStatus 之间没有实际的明显区别ErrorResponse
- 因为它们都在线上输出相同的响应。
最终,所有ServiceStack WebServiceExceptions都只是具有填充的ResponseStatus的响应DTO,它们返回HTTP错误状态。有许多不同的方法可以自定义异常的返回方式,包括:
默认情况下,在响应DTO中显示StackTraces仅在调试版本中启用,尽管此行为可以通过以下方式覆盖:
csharp
SetConfig(new HostConfig { DebugMode = true });