C# Can';t在.aspx文件中设置断点(无代码隐藏)

C# Can';t在.aspx文件中设置断点(无代码隐藏),c#,asp.net,debugging,breakpoints,C#,Asp.net,Debugging,Breakpoints,我有一个单页的.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["Authorizati

我有一个单页的.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>

受保护的无效页面加载(对象发送方、事件参数e)
{
HttpContext=HttpContext.Current;
字符串auth=Request.Headers[“Authorization”];
label1.InnerText=auth;
返回;
}
我已经创建了一个网页,引用IIS下的本地网站。我在Visual Studio 2017中以管理员权限运行此程序。然而,我不能在C代码中设置断点。我刚刚收到以下通知

“无法在此位置插入断点。”


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

这是因为页面在加载时被呈现,因此这不是编译代码,因此您不能设置断点,因为编译器不知道它

以下是一段引自:

ASP.NET Web窗体页中支持嵌入式代码块 主要是为了保持与旧ASP的向后兼容性 技术通常,使用嵌入式代码块进行复杂的 编程逻辑不是最佳实践,因为当代码 页面上混合了标记,可能很难进行调试和修改 维持。此外,由于代码仅在 在页面的呈现阶段,您的灵活性比使用 代码隐藏或脚本块代码,用于将代码范围限定到 页面处理的适当阶段


如果您确实需要在aspx页面上编写C#代码,您可以使用以下嵌入式代码块:

<% HttpContext context = HttpContext.Current;
   string auth = Request.Headers["Authorization"];
   label1.InnerText = auth; %>


在嵌入式代码块中,语法用于解析表达式并将其值返回到块中,您可以在其中设置断点。

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

  • 将C#脚本部分移到顶部(当您在C#上面有大量html时)
  • 在浏览器中刷新aspx页面,然后再次尝试设置断点

  • 您是否将
    AutoEventWireup
    属性
    true
    添加到@Page指令中?例如,
    。另外,在
    中单击鼠标右键并单击
    Clean Solution
    。添加
    Debug=“true”
    ,我过去可以在.ascx/.aspx文件的嵌入式服务器端代码中设置断点。但是@Adriani6的答案中的引语暗示了较新的VisualStudio版本可能不再支持这一点。这是不幸的,因为我想在旧代码中调试一些复杂的渲染逻辑。不,你也可以使用
    嵌入代码块,它甚至在我在回答中链接的官方文档中得到了演示。没有回答问题question@GregWoods,你愿意详细解释一下我为什么不回答这个问题吗?@Andreas2142你是说应该可以在脚本块中设置断点。OP说这不管用。你还没有解释为什么它不起作用。使用或不应该有任何区别。如果有,请解释原因