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