Is ResponseStatus needed?
The wiki says that we need to have a ResponseStatus property in our response DTO to handle exception serialization:
https://github.com/ServiceStack/ServiceStack/wiki/Validation
However it looks like ResponseStatus is generated automatically even if there is no ResponseStatus property in the response DTO.
Do we need the ResponseStatus property?
The Error Handling Docs explains how you can control which Services return a populated
ResponseStatus
DTO, i.e:Error Response Types
The Error Response that gets returned when an Exception is thrown varies on whether a conventionally-named
If it exists:{RequestDto}Response
DTO exists or not.The
Otherwise, if it doesn't:{RequestDto}Response
is returned, regardless of the service method's response type. If the{RequestDto}Response
DTO has a ResponseStatus property, it is populated otherwise no ResponseStatus will be returned. (If you have decorated the{ResponseDto}Response
class and properties with[DataContract]/[DataMember]
attributes, then ResponseStatus also needs to be decorated, to get populated).A generic
ErrorResponse
gets returned with a populated ResponseStatus property.The Service Clients transparently handles the different Error Response types, and for schema-less formats like JSON/JSV/etc there's no actual visible difference between returning a ResponseStatus in a custom or generic
ErrorResponse
- as they both output the same response on the wire.Custom Exceptions
Ultimately all ServiceStack WebServiceExceptions are just Response DTO's with a populated ResponseStatus that are returned with a HTTP Error Status. There are a number of different ways to customize how Exceptions are returned including:
Enabling StackTraces
By default displaying StackTraces in Response DTOs are only enabled in Debug builds, although this behavior is overridable with:
csharp SetConfig(new HostConfig { DebugMode = true });