我在页面的Page_Load事件上设置了一个断点,它永远不会被击中。没有警告或消息表明断点可能永远不会被击中,即使页面成功加载也不会被击中。
成功登录后,用户将使用登录控件的DestinationPageUrl属性重定向到此页面。如上所述,我可以登录并访问此页面,因此至少该部分可以正常工作。
如果我在Login页面的Page_Load事件上设置了一个断点(这里只是普通的旧ASP.NET示例Web应用程序),那么断点就会受到影响。我可以进入代码但是page_load事件永远不会被命中,页面就会出现。在这个序列中,我逐步完成login.aspx和site.master的page_load事件,但不是我真正想看的page_load。
有什么建议吗?谢谢!
答案 0 :(得分:16)
这里有几个可能的答案:
您实际上并没有进入您认为自己的页面。请参阅Why is Page_Load not firing after coming back from another page using ASP.NET - ergo epic embarrassment :)
您正在使用的浏览器已经过激活地缓存了页面而未加载它。确保您选择的浏览器禁用了所有缓存。
该页面继承自一个摆脱onload事件的基类。
Thee标记页面继承自您期望的类别。 (在复制/粘贴情况下会发生很多事情。)
答案 1 :(得分:15)
为了执行Page_Load,必须满足以下条件之一:
您必须在aspx页面的@Page指令中使用AutoEventWireup =“true”。
事件处理程序必须显式连接,通常在OnInit
<强>更新强>
正如@ bzlm的评论所指出的,AutoEventWireup的默认值是“true”,所以实际上如果页面指令中缺少AutoEventWireup属性,它也会被执行。
旧版本的Visual Studio(2003年当然,也许是2005年)用于explicitly wireup events, and recommend to set AutoEventWireup to false。
从我所看到的情况来看,我不再认为这是真的。使用以下行完成显式连接:
this.Load += new System.EventHandler(this.Page_Load);
在由设计器生成并从OnInit
方法调用的InitializeComponent方法中。
答案 2 :(得分:7)
如果您的&lt;%@Page%&gt;中有AutoEventWireup =“false”指令Page_Load方法不会附加到Page.Load事件。
答案 3 :(得分:1)
我在VB网络应用中遇到过这种情况。
Protected Sub Page_Load(sender As Object, e As EventArgs)
之后没有Handles
。我添加了Handles Me.Load
,这与AutoEventWireup="false"
一起使用。
设置AutoEventWireup="true"
也如上所述。
答案 4 :(得分:1)
我有同样的问题,但这里的答案都没有帮助我。我理解许多问题可能会给出同样的问题。因此,当我的其他人遇到同样的问题时,我会给出解决方案。我知道我可以将AutoEventWireup设置为true。我想知道当AutoEventWireup为false时如何使其工作..在C#中。我在VB中知道我可以添加&#39; Handles&#39;子句。
图片胜过千言万语,示例代码也是如此,所以这里是我的代码片段:
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
}
}
答案 5 :(得分:0)
嗯,当时VS可能有些错误(这对我来说已经发生了),但我从来没有这么做过。
你提到了重定向;如果在Page Init期间发生重定向,则在请求结束时永远不会调用Load事件。这可能是一个原因。
HTH。
答案 6 :(得分:0)
可能没有构建该特定Page_Load事件的调试符号(* .pdb文件)。
尝试清理解决方案并确保您处于调试模式,然后对web.config文件进行简单更改(新行将执行)以强制ASP.NET重新编译。
答案 7 :(得分:0)
将VS从调试更改为发布模式对我有用....不知道其工作原因,任何一位专家都可能建议
答案 8 :(得分:0)
在我的案例中,解决方案非常简单。 检查页面指令:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="WebApplication1_Delete.WebForm1" %>
我的代码的问题是缺少 codebehind &amp; 继承属性。
答案 9 :(得分:0)
我想在此处添加一个答案,了解导致我遇到此问题的原因。这是“噢噢”时刻之一,但它让我停留的时间超过了我想承认的时间......
我有一个名为BasePage.cs
的自定义基页,它继承自System.Web.UI.Page
,就像标准[Whatever]Page.cs
一样。 OnLoad()
中的BasePage.cs
方法会执行一些自定义检查和验证。这里没什么不寻常的。
我的问题是我忘记在base.OnLoad(e);
内的一个逻辑检查中调用OnLoad()
。而不是这个,我只是打电话给return;
。这导致我尝试查看的实际页面文件的Page_Load()
方法未被命中。所以我将代码更改为在我的支票中调用base.OnLoad(e);
并热潮,Page_Load()
按预期调用。
故事的道德:我正在迷上 dumb ,希望它能帮助其他人:-)。