无法在.aspx文件中设置断点(后面没有代码)

时间:2018-09-10 20:38:54

标签: 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["Authorization"];
    label1.InnerText = auth; 
    return;
}
</script>

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

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

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

3 个答案:

答案 0 :(得分:1)

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

这是MSDN Page的引文:

  

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您应该能够做到。以我的经验,设置断点的能力不稳定。当VS禁止这样做时,您可以尝试启用以下功能:

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

enter image description here