是否需要ResponseStatus?

Wiki表示,我们需要在响应DTO中具有ResponseStatus属性,以处理异常序列化:

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

但是,即使响应DTO中没有ResponseStatus属性,它也似乎自动生成了ResponseStatus。

我们需要ResponseStatus属性吗?

最佳答案

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),在自定义或通用ErrorResponse中返回 ResponseStatus 之间没有实际可见的区别-因为它们都在网络上输出相同的响应。

自订异常(exception)

最终,所有ServiceStack WebServiceExceptions都只是带有填充ResponseStatus的响应DTO,并以HTTP错误状态返回。有很多不同的方法可以定制返回异常的方式,包括:

启用S​​tackTrace

默认情况下,仅在调试版本中启用在响应DTO中显示StackTraces,尽管此行为可以用以下方法覆盖:
csharpSetConfig(new HostConfig { DebugMode = true });

关于c# - ServiceStack是否需要ResponseStatus?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11750799/

10-09 20:51