Jak zastąpić wszystkie standardowe strony błędów w WebAPI

Moja piękna usługa REST działa świetnie. Z wyjątkiem, gdy odwiedzam strony takie jak~/, która zwraca domyślną stronę IIS 403 Forbidden (nawet używając Skrzypek i określając tylkoAccept: application/json). Chcę tylko błędów JSON lub XML. Czy istnieje sposób na zastąpienie WSZYSTKICH wyjątków za pomocą niestandardowej procedury obsługi wyjątków? lub domyślny kontroler do obsługi wszystkich nieznanych żądań? Jaki jest najprostszy i najbardziej poprawny (jeśli jest inny) sposób radzenia sobie z tym, aby klienci potrzebowali tylko analizować przyjazne API REST datagramy XML lub bloby JSON?

Przykładowa prośba:

GET http://localhost:7414/ HTTP/1.1
User-Agent: Fiddler
Host: localhost:7414
Accept: application/json, text/json, text/xml

Odpowiedź: (czego nie lubię, zauważ totext/html nie był jednym z akceptowanych typów odpowiedzi)

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"> 
<!-- 
...

Odpowiedź (wolałbym):

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."
}

questionAnswers(3)

yourAnswerToTheQuestion