C# 以编程方式访问<;汇编/>;web.config的节?

C# 以编程方式访问<;汇编/>;web.config的节?,c#,.net,asp.net,configuration,C#,.net,Asp.net,Configuration,有没有办法访问web.config文件中的标记 我想检查文件中的“debug”属性是否设置为“true”,但我似乎不知道该怎么做。我尝试过使用WebConfigurationManager,但这似乎不允许我进入部分 更新: 我知道我可以轻松地像XML文档一样加载文件并使用XPath,但我希望框架中已经有一些东西可以帮我做到这一点。似乎会有一些东西,因为已经有了获取应用程序设置和连接字符串的方法 我还尝试过以几种方式使用WebConfigurationManager.GetSection()方法:

有没有办法访问web.config文件中的
标记

我想检查文件中的“debug”属性是否设置为“true”,但我似乎不知道该怎么做。我尝试过使用
WebConfigurationManager
,但这似乎不允许我进入
部分

更新:

我知道我可以轻松地像XML文档一样加载文件并使用XPath,但我希望框架中已经有一些东西可以帮我做到这一点。似乎会有一些东西,因为已经有了获取应用程序设置和连接字符串的方法

我还尝试过以几种方式使用
WebConfigurationManager.GetSection()
方法:

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

以上所有方法都返回
null
。我假设有一种方法可以访问此配置部分,因为已经存在一个类(“
compilementsection
”),我就是不知道如何获取它。

毕竟,您可以始终将
Web.config
文件加载到
XmlDocument
中,并使用
XPath
查询来查找

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config"));     
doc.SelectSingleNode("/configuration/system.web/compilation/@debug");
但是,我建议您使用
Configuration.GetSection
方法来解决这个问题

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

您不能将该文件作为常规XML文件加载并使用XPath获取节点吗?

尝试使用ConfigurationManager.GetSection方法。

使用:

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

然后可以检查
configSection.Debug
属性


提示:如果您需要知道如何从配置文件中获取值,请检查
\Windows\Microsoft.net\Framework\\config
文件夹中的machine.config文件。在这里,您可以看到如何定义所有配置节处理程序。一旦知道配置处理程序的名称(在本例中为CompliationSection),就可以在.Net文档中查找它。

检查是否在调试模式下运行的简单方法是使用该属性。它从编译元素的debug属性中得到答案,这与您尝试执行的操作相同。

您可以通过使用

#if (DEBUG)

#endif
如果是这样的想法…

尝试使用:

HttpContext.Current.IsDebuggingEnabled

您是否将节添加到
配置节
?类似于:
这不是web.config标志,因为它可以在运行时更改。正如您所写的,这只是编译时间,因此取决于是否进行调试或发布构建(编译)。这不是这里要问的问题。这是当您有一个
HttpContext
实例时(即,当您在控制器中处理请求时)的最佳答案,但如果您需要在应用程序中的另一个位置执行此操作,如
Global.asax
代码,那么@MikeScott的答案就是您需要的答案。
HttpContext.Current.IsDebuggingEnabled