El atributo ASP.MVC HandleError no funciona

Sé que es un problema común, pero he rastreado muchas discusiones sin resultado.

Estoy tratando de manejar errores con el atributo HandleError ASP.MVC. Estoy usando MVC 4.

Mi página de error se encuentra en Views / Shared / Error.cshtml y se ve así:

Test error page
<hgroup class="title">
    <h1 class="error">Error.</h1>
    <h2 class="error">An error occurred while processing your request.</h2>
</hgroup>

Mi FilterConfig.cs en la carpeta App-Start es:

public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
        }
    }

Mi controlador:

public class TestController : Controller
    {
        [HandleError(View = "Error")]
        public ActionResult Index()
        {
            throw new Exception("oops");
        }
    }

Y finalmente mi Web.config tiene el siguiente nodo:

<customErrors mode="On" defaultRedirect="Error">
</customErrors>

Cuando llamo a la acción del controlador, aparece una pantalla en blanco con el siguiente texto:

Error del servidor en la aplicación '/'.

Descripción del error de tiempo de ejecución: se produjo una excepción al procesar su solicitud. Además, se produjo otra excepción al ejecutar la página de error personalizada para la primera excepción. La solicitud ha sido terminada.

Si defaultRedirect = "Error" no está configurado en Web.config, aparece una pantalla amarilla con el siguiente texto:

Error del servidor en la aplicación '/'.

Descripción del error de tiempo de ejecución: se produjo un error de aplicación en el servidor. La configuración de error personalizada actual para esta aplicación evita que se vean los detalles del error de la aplicación.

Detalles: para que los detalles de este mensaje de error específico se puedan ver en la máquina del servidor local, cree una etiqueta dentro de un archivo de configuración "web.config" ubicado en el directorio raíz de la aplicación web actual. Esta etiqueta debería tener su atributo "mode" establecido en "RemoteOnly". Para permitir que los detalles se puedan ver en máquinas remotas, configure "modo" en "Desactivado".

Notas: La página de error actual que está viendo puede reemplazarse por una página de error personalizada modificando el atributo "defaultRedirect" de la etiqueta de configuración de la aplicación para que apunte a una URL de página de error personalizada.

¿Alguien sabe qué puede estar mal?

EDITAR:

Los errores fueron causados por el uso de diseño fuertemente tipado. Cuando se arroja un error, el mecanismo de manejo de errores de MVC está creando el objeto HandleErrorInfo que se pasa a la vista Error. Sin embargo, si usamos un diseño fuertemente tipado, los tipos no coinciden.

La solución en mi caso es usar el método Application_Error en Global.asax, que fue descrito perfectamente por SBirthare a continuación.

Respuestas a la pregunta(5)

Su respuesta a la pregunta