是否需要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错误状态返回。有很多不同的方法可以定制返回异常的方式,包括:
启用StackTrace
默认情况下,仅在调试版本中启用在响应DTO中显示StackTraces,尽管此行为可以用以下方法覆盖:csharpSetConfig(new HostConfig { DebugMode = true });
关于c# - ServiceStack是否需要ResponseStatus?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11750799/