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

时间:2009-04-03 11:54:12

标签: asp.net visual-studio visual-studio-2008 debugging

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

在这种特定情况下,我在代码隐藏页面中有代码,它们应该在“发布”模式下单向运行 - 也就是有人在浏览器中导航,而另一种方式是如果我处于调试模式来自VS2008 。 (这些类似于识别要使用的SQL连接字符串,是否显示某些错误或警告消息等)

VS2008配置为通过IIS出于各种原因(Cassini不是一个选项)。

搜索所有帮助我找不到任何东西,但有一种方法可以确定网站的启动方式。

提前致谢。

4 个答案:

答案 0 :(得分:7)

我不确定你的意思。如果您想知道当前是否正在调试应用程序,可以检查System.Diagnostics.Debugger.IsAttached属性。如果您想知道应用程序是否在调试模式下编译,那么您可以这样做:

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

此外,您可以使用ConditionalAttribute:

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

我强烈建议重新考虑这一点 - 根据我的经验,使用不同的发布和调试行为是将错误引入生产代码的绝佳方法。

答案 1 :(得分:4)

HttpContext.Current.IsDebuggingEnabled

请参阅this article

答案 2 :(得分:1)

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

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

}

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

编辑:或者你可以简单地使用上下文的IsDebuggingEnabled属性,正如Olivier PAYEN指出的那样。 :P oops。

答案 3 :(得分:0)

我会用

#if DEBUG
    // ...
#else
    // ...
#endif
然而,

方法,我只会在“主”方法中使用此异常捕获:

  • 如果是debug,则不要捕获(因此调试器可以捕获任何未捕获的异常),
  • 如果发布,则显示错误页面。

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

例如,如果查看连接字符串,我只需将它们放在web.config中。