0

为什么事件处理程序会在一天工作,然后在没有任何代码更改的情况下在第二天停止工作?

我已经多次遇到这个问题,但总是不得不玩弄,不知何故,事件处理程序又神奇地工作了。以下是今天再次发生在我身上的示例。您知道解决此类问题的快速方法吗?

<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click">
    Link
</asp:LinkButton>

我在这个方法上设置了一个断点,它永远不会被命中。

protected void LinkButton1_Click(object sender, EventArgs e)
{
    // snip
}

我试过清理解决方案,重建所有等等。这里有什么见解吗?

编辑:

是的,AutoEventWireup 设置为 true。没有进行其他系统/开发环境更改。我正在使用.NET 3.5。

4

4 回答 4

1

我知道您说没有更改任何代码,但您应该检查以确保在此页面上AutoEventWireup设置为。true还要检查 web.config 以确保此属性不适false用于整个应用程序。

编辑:

你能做的最好的事情就是不要依赖AutoEventWireup你在这里。你真的应该在你OnInit的页面覆盖中添加一个显式的事件连接,因为这样更清晰可以提供更好的性能。我不确定您为什么会看到您所看到的错误,但我几乎可以保证,如果您执行以下操作,它们会消失:

protected override void OnInit(EventArgs e)
{
    this.LinkButton1.Click += new EventHandler(this.LinkButton1_Click);
}
于 2009-01-26T16:01:38.260 回答
1

如果这是一个 .NET 1.1 应用程序,请检查 OnInit 方法中的事件处理程序是否存在。有一个 VS.2003 错误,有时会删除事件。如果它是 2.0 应用程序,我已经看到设计人员抱怨的自定义控件问题会干扰 pagename.aspx.designer.cs(或 .vb)中的事件生成。检查您的错误列表并查找“生成设计器文件失败”的任何警告。这也适用于 .NET 3.5。

于 2009-01-26T16:06:48.623 回答
0

您的aspnet_client文件夹是否与服务器上安装的 .NET 框架版本匹配?如果您使用 2.0 之前的 .NET 框架,aspnet_client则已知框架和脚本之间的此版本不匹配会导致问题。

于 2009-01-26T16:01:43.190 回答
0

秦然说的没错……居然有什么变了!大哇那里...

TFS 签入警报最终出现在我的垃圾邮件文件夹中,愚蠢的我没有对文件的历史进行比较。同事在代码隐藏中将 EnableViewState 设置为 false。

作为旁注:他这样做是因为它将响应大小降低到启用视图状态时的 10%。我最终通过使用查询字符串变量代替事件处理解决了同样的问题。

但是,感谢所有的想法。还好我没有在这件事上浪费太多时间。

于 2009-01-26T19:44:57.653 回答