【问题标题】:Can't set breakpoint in .aspx file (no code behind)无法在 .aspx 文件中设置断点(后面没有代码)
【发布时间】:2018-09-10 20:38:53
【问题描述】:

我有一个页面 .aspx,其中包含一些 JavaScript 代码和一些 C# 代码。没有代码隐藏文件。 C#代码是:

<script language="c#" runat="server">

protected void Page_Load(object sender, EventArgs e)
{
    HttpContext context = HttpContext.Current;
    string auth = Request.Headers["Authorization"];
    label1.InnerText = auth; 
    return;
}

</script>

我在 IIS 下创建了一个引用本地网站的网页。我在 Visual Studio 2017 中以管理员权限运行它。不过,我无法在 C# 代码中设置断点。我刚刚收到以下通知

无法在此位置插入断点。"

设置断点是否有一些限制是代码不存在于单独的代码隐藏文件中?

【问题讨论】:

  • 您是否将AutoEventWireup 属性true 添加到@Page 指令?例如,&lt;% @Page AutoEventWireup="true" ... %&gt;。同样右键单击并单击Clean Solution
  • &lt;%@ Page 指令中添加Debug="true"
  • 我曾经能够在我的 .ascx/.aspx 文件的嵌入式服务器端代码中设置断点。但是@Adriani6 的回答中的引用暗示较新的 Visual Studio 版本可能不再支持这一点。不幸的是,我想在旧代码中调试一些复杂的渲染逻辑。

标签: c# asp.net debugging breakpoints


【解决方案1】:

这是因为页面在加载时会被渲染,因此不是编译代码,因此您无法设置断点,因为编译器不知道它。

这是来自MSDN Page的引述:

ASP.NET Web 窗体页面支持嵌入式代码块 主要是为了保持与旧 ASP 的向后兼容性 技术。一般来说,使用嵌入式代码块来处理复杂的 编程逻辑不是最佳实践,因为当代码 与标记混合在页面上,可能难以调试和 维持。另外,因为代码只在 页面的渲染阶段,您的灵活性远低于使用 代码隐藏或脚本块代码,用于将代码范围限定为 页面处理的适当阶段。

【讨论】:

    【解决方案2】:

    你应该能够做到这一点。以我的经验,设置断点的能力并不稳定。当 VS 不允许这样做时,您可以尝试启用它:

    1. 将 C# 脚本部分移到顶部(当 c# 之上有很多 html 时)
    2. 在浏览器中刷新 aspx 页面,然后再次尝试设置断点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      相关资源
      最近更新 更多