Einheitliche, konsistente Fehlerantworten von ASP.Net Web API 2

Ich entwickle eine Web-API-2-Anwendung und versuche derzeit, Fehlerantworten auf einheitliche Weise zu formatieren (damit der Verbraucher auch weiß, welches Datenobjekt / welche Datenstruktur er untersuchen kann, um weitere Informationen zu den Fehlern zu erhalten). Folgendes habe ich bisher:

{   
    "Errors":
    [
        {
            "ErrorType":5003,
            "Message":"Error summary here",
            "DeveloperAction":"Some more detail for API consumers (in some cases)",
            "HelpUrl":"link to the docs etc."
        }
    ]
}

Dies funktioniert gut für Ausnahmen, die von der Anwendung selbst ausgelöst werden (d. H. Innerhalb von Controllern). Wenn der Benutzer jedoch eine falsche URI anfordert (und eine 404 abruft) oder das falsche Verb verwendet (und eine 405 abruft) usw., gibt Web Api 2 eine Standardfehlermeldung aus, z.

{
     Message: "No HTTP resource was found that matches the request URI 'http://localhost/abc'."
}

Gibt es eine Möglichkeit, diese Art von Fehlern (404, 405 usw.) einzufangen und in die Fehlerantwort im obigen ersten Beispiel zu formatieren?

Bisher habe ich versucht:

Benutzerdefinierte ExceptionAttribute-InhertierungExceptionFilterAttributeBenutzerdefinierte Inhertierung von ControllerActionInvokerApiControllerActionInvokerIExceptionHandler (Neue globale Fehlerbehandlungsfunktion von Web API 2.1)

Keiner dieser Ansätze ist jedoch in der Lage, diese Art von Fehlern abzufangen (404, 405 usw.). Irgendwelche Ideen, wie / ob dies erreicht werden kann?

... oder gehe ich das falsch an? Sollte ich Fehlerantworten in meinem speziellen Stil nur für Fehler auf Anwendungs- / Benutzerebene formatieren und mich auf die Standardfehlerantworten für Dinge wie 404 verlassen?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage