Ist es möglich, benutzerdefinierte Fehlerseiten mit einer MVC-Site zu verwenden, jedoch nicht mit einer Web-API?

Ich habe ein MVC-Projekt mit einem / api-Ordner, der meine Web-API-Controller enthält. Ich möchte folgende Dinge:

Meine MVC-Site soll eine benutzerdefinierte Fehlerseite bereitstellen, wenn ein Fehler auftrittMeine Web-API zur Bereitstellung der Standardfehlerantwort (json / xml mit Ausnahme und Stack-Trace)

In der web.config für meine MVC-Site habe ich einen httpErrors-Knoten und den errorMode auf "Custom" gesetzt, damit ich beim 404s / 500s / etc. Nette Fehlerseiten haben kann. treten beim Durchsuchen der MVC-Site auf:

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" subStatusCode="-1" />
  <remove statusCode="500" subStatusCode="-1" />
  <remove statusCode="403" subStatusCode="-1" />
  <error prefixLanguageFilePath="" statusCode="404" path="Content\notfound.htm" responseMode="File" />
  <error statusCode="500" path="/Errors" responseMode="ExecuteURL" />
  <error statusCode="403" path="/Errors/Http403" responseMode="ExecuteURL" /></httpErrors>

Mit dieser Konfiguration wird die API jedoch die benutzerdefinierte Fehlerseite bereitstellen, wenn ein Fehler auftritt, und nicht json / xml mit der Ausnahme- / Stack-Ablaufverfolgung (was das gewünschte Verhalten ist).

Gibt es eine Möglichkeit, benutzerdefinierte Fehler so zu konfigurieren, dass sie nur für meine MVC-Site und nicht für die Web-API gelten? Dieser Blog sagt, es gibt nicht (http://blog.kristandyson.com/2012/11/iis-httperrors-aspnet-web-api-fully.html), aber ich würde gerne hören, ob jemand eine Lösung gefunden hat, seit dieser Blog veröffentlicht wurde.

Ich nehme an, wenn nicht, könnte ich ein separates Projekt / eine separate Assembly für mein Web-API-Projekt erstellen. Das würde es mir ermöglichen, httpErrors für MVC und Web API separat zu konfigurieren, aber ich würde es vorziehen, kein weiteres Projekt zu erstellen, nur damit ich noch eine web.config konfigurieren kann.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage