Page_Load event was firing twice—inexplicably. If I removed the explicit declaration in the code-behind class, then it fired once. That pointed clearly to two bindings, but I could not find anything in the usual haunts of global code. Nothing had changed except that we moved to .NET 2.0.
Of course, I found out that in ASP.NET 2.0
AutoEventWireup defaults to
true even if no
Page declaration is present. Well, that's a fine how-do-you-do! In 1.1, it defaulted to
false, which made abundant sense. When migrating an application, you'd think that that would have been accounted for since it is such a potentially-disastrous change.
I mean it's one thing to have Page_Load fire twice. It's another entirely if you've got initialization stuff in OnInit or if you're doing any multicast delegation. Crazy!
Oh, so the easy fix is to change it in
Web.config by adding a
autoEventWireup="false" to the
pages element. Problem solved.