services read net iservicecollection injection iconfiguration dependency configureservices asp c# .net asp.net configuration

c# - iservicecollection - net core read configuration



¿Accede mediante programación a la sección<compilation/> de un web.config? (7)

¿No puedes cargar el archivo como un archivo XML normal y usar XPath para obtener los nodos?

¿Hay alguna forma de acceder a la etiqueta <compilation /> en un archivo web.config?

Quiero comprobar si el atributo " debug " está establecido en " verdadero " en el archivo, pero parece que no puedo encontrar la manera de hacerlo. Intenté usar WebConfigurationManager , pero eso no parece permitirme acceder a la sección <compilation /> .

Actualizar:

Sé que podría simplemente cargar el archivo como un documento XML y usar XPath, pero esperaba que hubiera algo en el marco que hiciera esto por mí. Parece que habría algo, ya que ya hay formas de obtener Configuración de la aplicación y Cadenas de conexión.

También intenté usar el método WebConfigurationManager.GetSection() de varias maneras:

WebConfigurationManager.GetSection("compilation")// Name of the tag in the file WebConfigurationManager.GetSection("CompilationSection") // Name of the class that I''d expect would be returned by this method WebConfigurationManager.GetSection("system.web") // Parent tag of the ''compilation'' tag

Todos los métodos anteriores devuelven null . Supongo que hay una manera de llegar a esta sección de configuración ya que hay una clase que ya existe ('' CompilationSection ''), simplemente no puedo encontrar la manera de obtenerla.


Después de todo, siempre puedes cargar el archivo Web.config en un XmlDocument y usar una consulta XPath para averiguarlo.

XmlDocument doc = new XmlDocument(); doc.Load(Server.MapPath("~/Web.config")); doc.SelectSingleNode("/configuration/system.web/compilation/@debug");

Sin embargo, le sugiero que use el método Configuration.GetSection para la solución.

CompilationSection section = Configuration.GetSection("system.web/compilation") as CompilationSection; bool debug = section != null && section.Debug;


Intenta usar el método ConfigurationManager.GetSection.


La forma más fácil de comprobar si se está ejecutando en modo de depuración es usar la propiedad HttpContext.IsDebuggingEnabled . Obtiene su respuesta del atributo de depuración del elemento de compilación, que es lo mismo que intentas hacer.


Utilizar:

using System.Configuration; using System.Web.Configuration;

...

CompilationSection configSection = (CompilationSection) ConfigurationManager.GetSection( "system.web/compilation" );

Luego puede verificar la propiedad configSection.Debug .

SUGERENCIA: si necesita saber cómo obtener un valor de un archivo config, consulte el archivo machine.config en su carpeta /Windows/Microsoft.net/Framework/<version>/CONFIG . Allí se puede ver cómo se definen todos los manejadores de la sección de configuración. Una vez que conozca el nombre del controlador de configuración (en este caso, CompilationSection), puede buscarlo en .Net docs.


Siempre puede verificar la opción de depuración en el nivel del compilador al encerrar su código con

#if (DEBUG) #endif

en caso de que esa fuera la idea ...


Intenta usar:

HttpContext.Current.IsDebuggingEnabled