Respuestas de error uniformes y consistentes de ASP.Net Web API 2

Estoy desarrollando una aplicación Web API 2 y actualmente estoy tratando de formatear los resposnes de error de manera uniforme (para que el consumidor también sepa qué objeto / estructura de datos puede inspeccionar para obtener más información sobre los errores). Esto es lo que tengo hasta ahora:

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

Esto funciona bien para las excepciones lanzadas por la propia aplicación (es decir, dentro de los controladores). Sin embargo, si el usuario solicita un URI incorrecto (y obtiene un 404) o utiliza un verbo incorrecto (y obtiene un 405), etc., la API web 2 emite un mensaje de error predeterminado, p.

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

¿Hay alguna forma de atrapar este tipo de errores (404, 405, etc.) y formatearlos en la respuesta de error en el primer ejemplo anterior?

Hasta ahora he intentado:

Excepción personalizada: inserción de atributoExceptionFilterAttributeControlador personalizado Acción Invocador inhertingApiControllerActionInvokerIExceptionHandler (nueva función de gestión de errores globales de Web API 2.1)

Sin embargo, ninguno de estos enfoques puede detectar este tipo de errores (404, 405, etc.). ¿Alguna idea sobre cómo / si esto se puede lograr?

... o, ¿voy por el camino equivocado? ¿Debería formatear solo las respuestas de error en mi estilo particular para los errores de aplicación / nivel de usuario y confiar en las respuestas de error predeterminadas para cosas como 404?

Respuestas a la pregunta(2)

Su respuesta a la pregunta