Page_Load上的断点如何才能被击中?

Den*_*ail 17 c# asp.net .net-4.0

我在页面的Page_Load事件上设置了一个断点,它永远不会被击中.没有警告或消息指示断点可能永远不会被击中,即使页面成功加载也不会被击中.

成功登录后,用户将使用登录控件的DestinationPageUrl属性重定向到此页面.如上所述,我可以登录并访问此页面,因此至少该部分有效.

如果我在Login页面的Page_Load事件上设置一个断点(这里只是普通的旧ASP.NET样本Web应用程序),断点就会受到影响.我可以进入代码但是page_load事件永远不会被命中,页面就会出现.在这个序列中,我逐步执行login.aspx和site.master的page_load事件,但不是我真正想要看到的page_load.

有什么建议?谢谢!

Not*_*tMe 16

这里有几个可能的答案:

  1. 你实际上并没有去你认为的页面.请参阅使用ASP.NET从另一个页面返回后,为什么Page_Load没有触发 - ergo epic embarrassment :)

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

  3. 该页面继承自基类,它除去了onload事件.

  4. 标记页面继承自您期望的类别.(在复制/粘贴情况下发生了很多).

  • 这个答案让我想到了很多东西.最后,page_load不会触发的页面是从错误的页面继承的.当我创建页面时,我拖动并复制了现有页面,然后重命名它.我没有处理该页面标记的标题中的所有细节.我使用母版页从头开始重新创建页面,添加了我做的一些更改并进行了测试.它按预期工作......除了比预期晚两个小时左右.谢谢您的帮助! (2认同)

Joe*_*Joe 15

为了执行Page_Load,必须满足以下条件之一:

  • 您必须在aspx页面的@Page指令中具有AutoEventWireup ="true".

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

UPDATE

正如在@ bzlm的注释中所指出的,AutoEventWireup的默认值是"true",因此实际上如果page指令中缺少AutoEventWireup属性,它也将被执行.

较早版本的Visual Studio(2003当然,也许是2005)用于显式连接事件,并建议将AutoEventWireup设置为false.

从我所看到的,我不再认为这是真的.明确的连线是用线完成的:

this.Load += new System.EventHandler(this.Page_Load);
Run Code Online (Sandbox Code Playgroud)

在InitializeComponent方法中,由设计器生成并从OnInit方法调用.


Cha*_*ert 7

如果在<%@ Page%>指令中有AutoEventWireup ="false",则Page_Load方法将不会附加到Page.Load事件.