Reputation: 143284
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?
Upvotes: 13
Views: 5491
Reputation: 143284
The Error Handling Docs explains how you can control which Services return a populated ResponseStatus
DTO, i.e:
The Error Response that gets returned when an Exception is thrown varies on whether a conventionally-named {RequestDto}Response
DTO exists or not.
The {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.
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:
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 });
Upvotes: 12