ASP.NET Page_load執行兩次的解決辦法


 memory 發表於 2006-11-15 2:36:00
 早上在寫一個.NET的計數器程序,發現每次刷新頁面,計數器就加2,屏蔽一切可能導致這種情況的代碼,問題依舊,苦悶了一個上午!后來在好友的協助下發現Page_Load這個方法執行了兩次,上網搜索相關的問題,發現遇到該問題的還真不少!

 諸如加入AutoEventWireup="false"等方法簡直是胡扯,因為一旦創建一個aspx頁面,這行代碼便會自動加入。后來找出一篇<img src="">會導致Page_load執行兩遍的文章,恍然大悟,馬上將iis的默認始動文檔,去掉,然后再調試,一切正常!

 本着鑽研精神,然后再慢慢找出導致執行兩次的原因,仔細檢查了aspx文件,並無發現<img src="">的代碼,當時也覺得奇怪,難道還有其他可能性,諸如<script src="">等?一個個來調試,仍然沒有半點頭緒!后來不經意發現當前頁面有一個圖片不能正常顯示(該圖片的地址是從數據庫讀出,右鍵屬性,發現其地址為:http://locahost,害了我頭痛了一個上午的禍首終於給我揪出來了。原來是 img src對應的數值是空導致的!

 致於img標簽為空執行page_load的原因是:img src=""   > img src="/"  > img src="/index.aspx",因為重新請求了index.aspx,所以page_load又執行了一次。不過如果IIS沒有設置默認文檔,該問題是不會出現的,所以一些人提及到本地調試沒有問題,一旦上傳至服務器就出問題,就是因為這個原因!

   防止page_load多次執行的辦法最好是檢查客戶端是否有空src的圖片,然后服務器端亦要做相關的安全檢查,如果某個字段打算作為img src的值,一定要檢查該值是否為空,不然....不幸又將降臨你身上了。
 
原文:http://memoryblog.com.cn/blog/memory/archives/2006/6512.html


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com