awp001

 

也谈“Page_Load被执行两次”的问题

      最近本人遇到这样一个问题,在跟踪ASPX页面后台代码时发现Page_Load被执行两次,给性能造成很大的影响,而且进一步跟踪发现OnInit方法也执行了两次,该页面通过前一页Response.Redirect()方法重定向而来,而且还发现将导航到该页面的方法换成Server.Transfer()将不出现这个问题。
     在Google和百度上搜索,发现绝大多数的答复都是关于页面Page指令AutoEventWireup属性的设置问题,经过确认,AutoEventWireup已默认为"false",排除这种可能,检查程序代码逻辑也未发现问题所在,于是新建测试页面代替原页面,Page_Load方法执行正常,复制出问题的页面全部标签及控件到测试页,问题依旧,初步断定,问题出在页面标记上。通过不断删除控件、标签、样式定义等,最后页面只剩下一个光秃秃的表格,历尽千辛万苦,问题终于找到了,出在表格标签的BackGround属性上

<table background="#FFFFFF" >
</table>

     原来由于页面设计人员的疏忽将BackGround设成了RGB值,去掉该属性或将该属性设置成一个图片文件后,问题得到了解决。

    总结:未将表格背景设置为有效的图片或未指定Img 标签的src都将导致这个问题,如:

<Img Src="">

具体原理还没有彻底弄清楚,希望与熟悉具体原理的同行多多交流。

posted on 2006-10-27 21:44  awp001  阅读(639)  评论(0)    收藏  举报

导航