如何确定我的网站运行的“模式”?
在这种特定情况下,我在代码隐藏页面中有代码,它们应该在“发布”模式下单向运行 - 也就是有人在浏览器中导航,而另一种方式是如果我处于调试模式来自VS2008 。 (这些类似于识别要使用的SQL连接字符串,是否显示某些错误或警告消息等)
VS2008配置为通过IIS出于各种原因(Cassini不是一个选项)。
搜索所有帮助我找不到任何东西,但有一种方法可以确定网站的启动方式。
提前致谢。
答案 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
然而,方法,我只会在“主”方法中使用此异常捕获:
这些不会改变程序的流程,只是不要这样做,有龙:)
例如,如果查看连接字符串,我只需将它们放在web.config中。