代码之家  ›  专栏  ›  技术社区  ›  Dan Herbert

以编程方式访问web.config的<compilation/>部分?

  •  10
  • Dan Herbert  · 技术社区  · 16 年前

    有没有办法进入这个房间 <compilation />

    调试 “属性设置为” 符合事实的 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 . 我假设有一种方法可以到达这个配置部分,因为已经存在一个类(' CompilationSection ’),我就是想不出怎么得到它。

    7 回复  |  直到 16 年前
        1
  •  27
  •   Mike Scott    14 年前

    使用:

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

    ...

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

    然后您可以检查 configSection.Debug 所有物

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

        2
  •  24
  •   Jason Diamond    16 年前

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

        3
  •  3
  •   Mehrdad Afshari    16 年前

    毕竟,您总是可以加载 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;
    
        4
  •  1
  •   Dan Herbert    13 年前

    通过使用

    #if (DEBUG)
    
    #endif
    

    如果是这样的话。。。

        5
  •  1
  •   Robert    11 年前

    尝试使用:

    HttpContext.Current.IsDebuggingEnabled
    
        6
  •  0
  •   StingyJack    16 年前

    你不能把这个文件作为一个普通的XML文件加载,然后使用XPath来获取节点吗?

        7
  •  0
  •   Perry Neal    16 年前

    尝试使用ConfigurationManager.GetSection方法。