Is ResponseStatus needed in ServiceStack?
c#, error-handling, servicestack
Solution
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 `{RequestDto}Response` DTO exists or not.
If it exists:
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).
Otherwise, if it doesn't:
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 }); `
Problem
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?