ASP.NET Page_Load執行兩次

來源:互聯網
上載者:User

標籤:style   blog   http   color   檔案   資料   

早上在寫一個.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的值,一定要檢查該值是否為空白,不然....不幸又將降臨你身上了。

 

以上是網上搜尋而來,以下才是我的真正情況:

首先想到的是代碼中是不是存在跳轉到自身的頁面的代碼,比如:當前頁面是a.aspx, 但在代碼中存在Response.Redirect("a.aspx")語句,或者在用戶端存在window.location.href = ‘a.aspx‘這種語句,從而造成頁面重新載入,但是通過檢查代碼沒有發現。在網路上搜尋了一下,發現一篇文章中說可能是圖片控制項<img/>中的圖片地址引(src=...)用了無效地址造成了頁面的重新載入。這個給我們提供了一個思路,也就是html或者伺服器端控制項的屬性被賦非法值,那麼可能造成也頁面的重新早入,通過一點點的去掉html代碼,然後進行斷點跟蹤,發現在table中間的background屬性被我賦了一個顏色值,即"#ECECEC"這樣的值。而background的合法值應該是一個地址,我的原意是給table設定一個背景顏色,所以這裡的屬性是bgcolor。就是由於這個原因造成了頁面的重新載入,修改後問題解決。

罪魁禍首的代碼如下:

<li style="background:url(‘‘) no-repeat 0 7px;"><span class="numberfont">當前頁<%= this.PageIndex %>/共<%= TotalPage %>頁(<%= TotalCount %>條記錄)</span>

就是這個 background:url(‘‘) 害苦了我。

此記,防止下次再犯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.