如何确定web.config中的编译debug =“true”

时间:2011-05-31 20:12:53

标签: c# asp.net debugging

我在这里画一个空白的东西应该很简单...

我正在尝试做类似的事情:

    <my:control runat="server" id="myid" Visible="<%= (is compilation debug mode?) %>" />

5 个答案:

答案 0 :(得分:52)

HttpContext.IsDebuggingEnabled property

using System.Web;

if (HttpContext.Current.IsDebuggingEnabled) { /* ... */ }

来自文档:

  

获取一个值,该值指示当前HTTP请求是否处于调试模式[...]   true如果请求处于调试模式;否则,false

答案 1 :(得分:46)

这会让您获得<compilation>部分组中的<system.web>元素:

using System.Web.Configuration ;

. . .

CompilationSection compilationSection = (CompilationSection)System.Configuration.ConfigurationManager.GetSection(@"system.web/compilation") ;

. . .

// check the DEBUG attribute on the <compilation> element
bool isDebugEnabled = compilationSection.Debug ;

容易!

答案 2 :(得分:15)

<my:control runat="server" id="myid" Visible="<%= HttpContext.Current.IsDebuggingEnabled %>" />

请参阅http://msdn.microsoft.com/en-us/library/system.web.httpcontext.isdebuggingenabled%28v=vs.90%29.aspx

http://www.west-wind.com/weblog/posts/2007/Jan/19/Detecting-ASPNET-Debug-mode下面有丰富的反馈意见。

答案 3 :(得分:0)

在您的代码中,您可以使用IF DEBUG预处理器指令来设置可见性属性:

http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

Phil Haack关于此的好文章:

http://haacked.com/archive/2007/09/16/conditional-compilation-constants-and-asp.net.aspx#51205

答案 4 :(得分:0)

我打赌你可以使用

#if DEBUG
#endif 
ASPX 页面中的一些代码,而不是代码隐藏(这是一个单独的编译)。

类似的东西:

<script runat="server" language="C#">
  protected Page_Load() {
#if DEBUG
     myid.Visible = true;
#else
     myid.Visible = false;
#endif
  }
</script>

或者,您可以我们ConfigurationManagerXElement并实际解析代码中的web.config并找到该属性。

例如:

var xml = XElement.Load("path-to-web.config");
bool isDebug = (bool)xml.Descendants("compilation").Attribute("debug");