taghelper tag route page net asp asp.net

asp.net - page - asp route tag helper



¿Hay alguna forma de verificar, mediante programación, si los CustomErrors de una aplicación ASP.NET están desactivados? (3)

Por lo general, detectamos excepciones no controladas en Global.asax, y luego redireccionamos a una página de error amigable. Esto está bien para el entorno Live, pero en nuestro entorno de desarrollo nos gustaría comprobar si CustomErrors está desactivado, y si es así, simplemente lance el error feo.

¿Hay una manera fácil de verificar si CustomErrors está desactivado a través del código?


Esto debería funcionar...

using System.Web.Configuration; using System.Configuration; // pass application virtual directory name Configuration configuration = WebConfigurationManager.OpenWebConfiguration("/TestWebsite"); CustomErrorsSection section = (CustomErrorsSection)configuration.GetSection("system.web/customErrors"); CustomErrorsMode mode=section.Mode;


Yo sugeriría usar la siguiente propiedad:

HttpContext.Current.IsCustomErrorEnabled

Como se mencionó here , IsCustomErrorEnabled toma en consideración más cosas como RemoteOnly:

La propiedad IsCustomErrorEnabled combina tres valores para decirle si los errores personalizados están habilitados para una solicitud en particular. Esto no es tan simple como leer el archivo web.config para revisar la sección. Hay un poco más de cosas detrás de escena para determinar realmente si los errores personalizados están habilitados.

La propiedad mira estos tres valores:

  1. La propiedad minorista de la sección <despliegue> de web.config. Esta es una propiedad útil para establecer al implementar su aplicación en un servidor de producción. Esto anula cualquier otra configuración para errores personalizados.

  2. La propiedad de la sección <customErrors> de web.config. Esta configuración indica si los errores personalizados están habilitados y, si es así, si están habilitados solo para solicitudes remotas.

  3. La propiedad IsLocal del objeto HttpRequest. Si los errores personalizados están habilitados solo para solicitudes remotas, debe saber si la solicitud proviene de una computadora remota.


Sí, a través de WebConfigurationManager :

System.Configuration.Configuration configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/"); System.Web.Configuration.CustomErrorsSection section = (CustomErrorsSection)configuration.GetSection("system.web/customErrors");

Una vez que tenga la sección, puede verificar si el modo está activado o desactivado de la siguiente manera:

CustomErrorsMode mode = section.Mode; if (mode == CustomErrorsMode.Off) { // Do something }