【问题标题】:How do I check if Debug is enabled in web.config如何检查是否在 web.config 中启用了调试
【发布时间】:2009-02-12 19:31:00
【问题描述】:

我的 VB.NET 1.1 天有一些代码可以让我动态检查是否在 web.config 中启用了调试。如果我可以简单地让网络管理员启用调试,我想为什么要重新发明轮子来打开/关闭日志记录。这是我在 VB.NET 中使用的代码,效果很好:

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

当我想将它转换为 C# 并在 .NET 3.5 中使用它时,我遇到了一些麻烦,它不起作用。此外,我想使用较新的 ConfigurationManager.GetSection 构造。谁能建议如何最好地阅读system.web/compilation/debug=true|false 值?

非常感谢!

【问题讨论】:

    标签: c# asp.net debugging


    【解决方案1】:

    用途:

    HttpContext.Current.IsDebuggingEnabled
    

    此属性实际上查看 web.config 配置设置。如果您使用 Reflector 查看它,您会发现它使用一些内部类获取实际的 ConfigurationSection 对象。

    【讨论】:

    【解决方案2】:

    以下应该可以工作

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

    【讨论】:

    • 这是一种非常复杂且容易出错的方法。应该使用@driis 回答。
    • 但是,如果您处于类库级别,您不能(或不应该)访问 HTTP 上下文怎么办?
    • @Stuart.Sklinar 我同意,但话又说回来,如果您处于类库级别,您也不应该引用System.Web dll。关于如何在不添加额外库参考的情况下获得此信息的任何建议?
    • @Stuart.Sklinar: [继续...] 特别是因为使用 ConfigurationManager.GetSection("system.web/compilation") 假设是一个 Web 应用程序?我希望在 Web 和 Windows 应用程序中都使用它。
    • @Stuart.Sklinar 谢谢,我最终确实做到了。 :)
    【解决方案3】:

    -编辑- 我知道这并没有具体回答问题,因为您要求 Web.Config - 它立即建议一个 web.app,并且不是在“运行时”决定的,但它确实提供了一种检查是否这是调试模式。

    另一方面,在同一个应用程序上,您不会理想地在调试模式和发布模式之间互换.. -结束编辑-

    使用条件编译怎么样?

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

    bool isDebuggingEnabled = false
    
    #if debug
       isDebuggingEnabled = true;
    #endif
    

    这肯定是最有意义的,并且不需要任何具体的参考?

    只需确保在您的项目中打开DEBUG 常量(见图)

    【讨论】:

    • 我喜欢这种解决方案,适用于没有 http 上下文的情况。我用它来设置捆绑优化。
    猜你喜欢
    • 2021-10-07
    • 1970-01-01
    • 2021-12-30
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2013-05-01
    • 2019-02-09
    相关资源
    最近更新 更多