2009-02-12 36 views
45

Tengo algún código de mi VB.NET 1.1 días que me permitió verificar dinámicamente si Debug estaba habilitado en web.config. Pensé por qué reinventar la rueda para activar/desactivar el registro si simplemente podía hacer que el administrador web habilitara la depuración. Aquí está el código que utilicé en VB.NET que funcionaba bien:Cómo verifico si Debug está habilitado en web.config

ConfigurationSettings.GetConfig("system.web/compilation").Debug.ToString() 

Cuando quería convertir esto en C# y utilizarlo en .NET 3.5 me encontré con algunos problemas y que no funcionaría. Además, me gustaría utilizar la construcción más nueva de ConfigurationManager.GetSection. ¿Alguien puede sugerir la mejor manera de leer el valor system.web/compilation/debug=true|false?

¡Muy apreciado!

Respuesta

104

Uso:

HttpContext.Current.IsDebuggingEnabled 

Esta propiedad se ve realmente en el ajuste de configuración web.config. Si lo mira con Reflector, encontrará que obtiene el objeto ConfigurationSection real utilizando algunas clases internas.

+2

Gran! Esta es una forma mucho mejor de comprobar la depuración que leer el archivo web.config directamente ... Una cosa que vale la pena mencionar es que encontré un artículo que indica que este método no tendrá en cuenta si la depuración se establece en el nivel de la página. http://petesbloggerama.blogspot.com/2007/01/is-debug-mode-evil.html – Dscoduc

9

la siguiente debería funcionar

var cfg=(System.Web.Configuration.CompilationSection) ConfigurationManager.GetSection("system.web/compilation"); 
if (cfg.Debug) 
{ 
... 
} 
+0

Excelente, gracias. – Dscoduc

+1

Esa es una forma bastante complicada y propensa a errores para lograrlo. Debería usar la respuesta @driis. –

+0

Estoy de acuerdo con Byte, que es el motivo por el que hice +1 en su respuesta ... – JoshBerke

5

operación -Editar- Soy consciente de esto no responde a la pregunta específica, como lo pidió para Web.Config - lo que sugiere inmediatamente un web.app, y está no se decidió en "tiempo de ejecución", pero permite una buena manera de comprobar si es el modo de depuración.

Por otro lado, no habría idealmente intercambiados entre depuración y el modo de liberación de la misma aplicación .. -End Editar-

¿Cómo sobre el uso de la compilación condicional ??

http://msdn.microsoft.com/en-us/library/aa691099(v=vs.71).aspx

bool isDebuggingEnabled = false 

#if debug 
    isDebuggingEnabled = true; 
#endif 

que seguramente la mayoría del sentido, y no requiere ninguna referencia específica?

Sólo asegúrese de que la DEBUG Constante está activada en su proyecto (ver foto)

enter image description here

+0

Me gusta esta solución para los casos en que no hay un contexto http. Lo uso para configurar la optimización del paquete. –

Cuestiones relacionadas