代码之家  ›  专栏  ›  技术社区  ›  David

如何通过Visual Studio确定ASP.NET站点是“正常”运行还是“调试”运行?

  •  0
  • David  · 技术社区  · 17 年前

    我如何确定我的站点运行的“模式”?

    在这个特定的例子中,我在代码隐藏页面中有一些代码,它们应该在“发布”模式下以一种方式运行——即某人使用浏览器在那里导航,如果我在VS2008的调试模式下,则以另一种方式运行。(例如,识别要使用的SQL connect字符串、是否显示某些错误或警告消息等)

    搜索所有的帮助,我找不到任何东西,但必须有一种方法来确定该网站是如何启动的。

    提前谢谢。

    4 回复  |  直到 17 年前
        1
  •  7
  •   Tamas Czinege    17 年前

    我不知道你的意思。如果您想知道应用程序当前是否正在调试,可以检查 System.Diagnostics.Debugger.IsAttached

    #if DEBUG
       const bool DebugMode = true;
    #else
       const bool DebugMode = false;
    #endif
    

    此外,您还可以使用ConditionalAttribute:

    [System.Diagnostics.Conditional("DEBUG")]
    public void ThisMethodWillOnlyExecuteInDebugMode()
    {
    }
    

        2
  •  4
  •   Olivier Payen Sackurise    17 年前
    HttpContext.Current.IsDebuggingEnabled
    

    this article

        3
  •  1
  •   AnthonyWJones    17 年前

    我使用此方法来检测编译部分中是否启用了调试:-

    bool DebugModeOn()
    {
        System.Web.Configuration.CompilationSection configSection =
                 (System.Web.Configuration.CompilationSection)HttpContext.Current.GetSection("system.web/compilation");
        return configSection.Debug;
    
    }
    

    这并不完全符合你的要求。然而,由于这在生产中是错误的,在开发中是正确的,所以它可能已经足够好了。

    :或者,您可以简单地使用上下文的IsDebuggingEnabled属性,正如Olivier PAYEN指出的那样:哎呀。

        4
  •  0
  •   Lennaert    17 年前

    我会使用

    #if DEBUG
        // ...
    #else
        // ...
    #endif
    

    然而,在“Main”方法中,我只将此方法用于异常捕获:

    • 如果发布,则显示错误页面。

    这些不会改变程序的流程,只是不要这样做,会有龙:)