12

是否需要响应状态?

wiki 说我们需要在响应 DTO 中有一个 ResponseStatus 属性来处理异常序列化:

https://github.com/ServiceStack/ServiceStack/wiki/Validation

但是,即使响应 DTO 中没有 ResponseStatus 属性,它看起来也会自动生成 ResponseStatus 。

我们需要 ResponseStatus 属性吗?

4

1 回答 1

12

错误处理文档解释了如何控制哪些服务返回填充的DTO ResponseStatus,即:

错误响应类型

抛出异常时返回的错误响应取决于是否存在常规命名的{RequestDto}ResponseDTO。

如果存在:

{RequestDto}Response无论服务方法的响应类型如何,都会返回。如果{RequestDto}ResponseDTO 具有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 });

于 2012-08-01T00:04:19.320 回答