ASP.NET:无法将 Web 应用程序切换到调试模式

Posted

技术标签:

【中文标题】ASP.NET:无法将 Web 应用程序切换到调试模式【英文标题】:ASP.NET: Can't switch web application into DEBUG mode 【发布时间】:2011-01-14 18:00:48 【问题描述】:

我有一个 ASP.NET 3.5 Web 应用程序。对于应用程序:

配置设置为“DEBUG; 为“DEBUG”配置选中“Define DEBUG constant”复选框; web.config 文件包含“true”作为“编译”节点的“调试”属性的值。

不过还是下面的代码:

#if ( _DEBUG )
    const bool DebugMode = true; 
#else
    const bool DebugMode = false;
#endif
string strSettings = string.Concat("(DebugMode: ", DebugMode, ")");

将“DebugMode: False”放入结果字符串。同时我无法在调试模式下使用 VisualStudio 连接到应用程序...

问题:

如何获得调试模式的真正价值?

【问题讨论】:

【参考方案1】:

这是 C# 吗?常量是DEBUG,而不是_DEBUG

【讨论】:

常量在 Visual Studio 中定义...是的,它默认为 DEBUG,但没有什么能阻止您将其重命名为您想要的任何内容! @Pauli,这是真的,但问题并没有这样做。我也不会将重命名的编译器指令称为“真正的价值”。【参考方案2】:

您是否将网站编译为 Web 应用程序?

编译预处理器指令的 _DEBUG 常量由 Visual Studio 设置并像这样传递给编译器

csc /define:_DEBUG

但是当您访问该网站时,它通常不是由 Visual Studio 编译的,而是 asp_net 编译器,它只查看编译部分的调试属性。您可以在运行时使用

检查此属性的值
HttpContext.Current.IsDebuggingEnabled

如果您真的需要在网页中定义符号,您可以通过在 web.config 中指定 /define 参数将其传递给编译器

<configuration>
   <system.web>
      <compilation debug="true">
         <compilers>
            <compiler language="C#;Csharp" compilerOptions="d:_DEBUG"/>
         </compilers>
      </compilation>
   </system.web>
</configuration>

【讨论】:

保利,感谢您的回答。正如我提到的,我有网络应用程序(不是网站)。这意味着应用程序需要在访问之前由 VS 编译(与网站相反)。实际上,对我来说,应用程序的“”选项的目的是什么并不清楚。 AFAIK,对网站有意义,对应用程序没有意义。 AFAIK,即使通过 VS 编译网站应用程序,它也会调用 aspnet_compiler.exe,控制它的唯一方法是通过 web.config 的编译部分。您可以通过在编译网站时查看您的任务管理器来检查这一点。检查是否出现了一个名为 aspnet_compiler.exe 的进程。 msdn.microsoft.com/en-us/library/ms229863(v=VS.100).aspx

以上是关于ASP.NET:无法将 Web 应用程序切换到调试模式的主要内容,如果未能解决你的问题,请参考以下文章

从调试模式切换到发布模式时,C# Asp.Net Webservice 抛出异常

ASP.NET MVC5/IIS Express 无法调试 - 代码未运行

ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试

IIS7web服务器调试ASP.net程序遇到的一些故障的解决办法

ASP.NET 从 SQL 切换到 Access DB 后,我无法让我的数据源/gridview 正常工作

在ASP.Net中进行调试的时候,弹出“无法在web服务器上启支调试”对话框,请问各位高手怎么解决啊?