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?

Original source