<Error><Message>An error has occurred.</Message></Error>
Si queremos enviar un mensaje que aporte más información al cliente podemos crear una clase derivada de
ExceptionFilterAttribute, tal como esta
- public class MyExceptionFilter:ExceptionFilterAttribute
- {
- public override void OnException(HttpActionExecutedContext context)
- {
- HttpResponseMessage msg = new HttpResponseMessage(HttpStatusCode.InternalServerError)
- {
- Content = new StringContent("Se ha producido un error en la app."),
- ReasonPhrase = "Se ha producido un error en la app."
- };
- context.Response = msg;
- }
- }
Para usarla de forma global (que todos los controllers la usen) podemos añadir la siguiente línea al Application_Start() de Global.asax:
GlobalConfiguration.Configuration.Filters.Add(new WebAPIExceptionsDemo.MyExceptionFilter());
O bien, para usarla para determinados controllers, añadir a estos el atributo creado:
- [MyExceptionFilter]
- public class CustomerController
- {
- ...
Esta entrada es un extracto del artículo http://www.codeguru.com/csharp/.net/net_asp/handling-exceptions-in-asp.net-web-api.htm.