Cómo anular todas las páginas de error estándar en WebAPI
Mi hermoso servicio web REST funciona muy bien. Excepto si visito páginas como~/
, que devuelve la página predeterminada de IIS 403 Prohibida (incluso utilizando Fiddler y especificando soloAccept: application/json
). No quiero nada más que errores JSON o XML. ¿Hay alguna forma de anular TODAS las excepciones con un controlador de excepciones personalizado? ¿O un controlador predeterminado para manejar todas las solicitudes desconocidas? ¿Cuál es la forma más simple y más correcta (si es diferente) de manejar esto para que los clientes solo necesiten analizar datagramas XML compatibles con API REST o blobs JSON?
Solicitud de ejemplo:
GET http://localhost:7414/ HTTP/1.1
User-Agent: Fiddler
Host: localhost:7414
Accept: application/json, text/json, text/xml
Respuesta: (que no me gusta, note quetext/html
no era uno de los tipos de respuesta aceptados)
HTTP/1.1 403 Forbidden
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcaWNhcm9sXENoYXJpdHlMb2dpYy5pQ2Fyb2wuQXBp?=
X-Powered-By: ASP.NET
Date: Fri, 25 Jan 2013 21:06:21 GMT
Content-Length: 5396
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IIS 8.0 Detailed Error - 403.14 - Forbidden</title>
<style type="text/css">
<!--
...
Respuesta (que preferiría):
HTTP/1.1 403 Forbidden
Cache-Control: private
Content-Type: application/json; charset=utf-8
Date: ...
Content-Length: ....
{
"error":"forbidden",
"status":403,
"error_description":"Directory listing not allowed."
}