如何在Page_Load上的断点不被击中

本文关键字:断点 Page Load | 更新日期: 2023-09-27 17:50:42

我在页面的Page_Load事件上设置了一个断点,该断点永远不会被命中。没有警告或消息表明断点可能永远不会被击中,它只是永远不会被击中,即使页面加载成功。

成功登录后,使用登录控件的DestinationPageUrl属性将用户重定向到该页。如上所述,我可以登录并进入这个页面,所以至少这部分是有效的。

如果我在登录页面的Page_Load事件上设置一个断点(只是普通的旧ASP. js)。. NET示例Web应用程序(这里),断点将被击中。我可以进入代码,但page_load事件从未被击中,页面只是出现。在这个序列中,我逐步处理登录的page_load事件。Aspx和站点。而不是我真正想看到的page_load

有什么建议吗?谢谢!

如何在Page_Load上的断点不被击中

要执行Page_Load,必须满足下列条件之一:

  • 你必须在aspx页面的@Page指令中设置AutoEventWireup="true"

  • 事件处理程序必须显式地连接,通常在OnInit

正如@bzlm的评论所指出的,AutoEventWireup的默认值是"true",所以事实上,如果页面指令中缺少AutoEventWireup属性,它也会被执行。

旧版本的Visual Studio(当然是2003年,也可能是2005年)习惯于显式地连接事件,并建议将AutoEventWireup设置为false。

在我看来,我认为这不再是真的了。显式的连接是通过以下行完成的:

this.Load += new System.EventHandler(this.Page_Load);

中的InitializeComponent方法,该方法由设计器生成并从OnInit方法调用。

这里有几个可能的答案:

  1. 您实际上并没有进入您认为的页面。看看为什么Page_Load不触发从另一个页面使用ASP回来后。. NET -因此史诗般的尴尬:)

  2. 您正在使用的浏览器已经积极缓存页面并且没有加载它。请确保您选择的浏览器已禁用所有缓存。

  3. 页面从基类继承,该基类取消了onload事件。

  4. 标记页是从一个与您期望的不同的类继承的。(在复制/粘贴情况下经常发生)

如果在你的<% @Page %>指令中设置了AutoEventWireup="false",那么Page_Load方法将不会被附加到页面上。负载的事件。

有可能调试符号(*。

没有为特定的Page_Load事件构建pdb文件。

尝试清理您的解决方案并确保您处于调试模式,然后对您的web进行简单更改。配置文件(一个新的行就可以了),以强制ASP。. NET重新编译。

我在一个VB web应用程序中有这个行为。

Protected Sub Page_Load(sender As Object, e As EventArgs)后没有Handles。我添加了Handles Me.Load,这与AutoEventWireup="false"一起工作。

设置AutoEventWireup="true"也可以如上所述。

我也遇到过同样的问题,但是这里的答案没有一个对我有帮助。我理解很多问题可能会给出同样的问题。所以当别人遇到和我一样的问题时,我给出了我的解决方案。我知道我可以将AutoEventWireup设置为true。我想知道如何使它工作时,AutoEventWireup是假的。在c#。我知道在VB中我可以添加'Handles'子句。

一张图片胜过千言万语,示例代码也是如此,下面是我的代码片段:

public partial class Login : System.Web.UI.Page
{
    protected override void OnInit(EventArgs e) // i added this method.
    {
        Load += new EventHandler(Page_Load);
        base.OnInit(e);
    }
    protected void Page_Load(object sender, EventArgs e)
    { // code for the Page Load event here
    }
}

我想在这里添加一个导致我遇到这个问题的答案。这是那些"哦,呸"的时刻之一,但它让我困在那里的时间比我想承认的要长…

我有一个名为BasePage.cs的自定义基页,它继承自System.Web.UI.Page,就像标准[Whatever]Page.cs一样。BasePage.cs中的OnLoad()方法执行一些自定义检查和验证。没有什么不寻常的。

我的问题是,我忘记从OnLoad()内的一个逻辑检查中调用base.OnLoad(e);。而不是这样,我只是简单地调用return;。这导致我试图查看的实际页面文件的Page_Load()方法没有被击中。所以我改变了我的代码,在我的检查中调用base.OnLoad(e);boomPage_Load()按预期被调用。

这个故事的寓意:我承认我的愚蠢,希望它能帮助别人的道路:-)。

好吧,这是可能的VS可能有bug(它发生在我身上),但我从来没有得到一致。

你提到了重定向;如果重定向发生在页面初始化期间,则在请求结束时永远不会调用Load事件。这可能是一个原因。

HTH .

改变VS从调试到发布模式为我工作....不知道为什么它工作的原因,任何一个专家可能会建议

解决方案非常简单,在我的情况下。检查Page指令:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1_Delete.WebForm1" %>

我的代码的问题是缺少代码后面的 &继承属性。

虽然这很蠢,但如果能节省一两分钟的话。我在发布中有VS…一旦我将其更改为Debug,它就像预期的那样启动了。一时想不明白我又回过头来,看见了,就打了我的头....