日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[原]请留心asp:Image控件中的ImageUrl属性

發布時間:2025/7/25 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [原]请留心asp:Image控件中的ImageUrl属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天快下班的時候,打開自己做的頁面,在頁面上(用的是Firefox)隨便點點,檢查看看有沒有什么地方要修改的。但就是這簡單的動作,切發現了一個讓我郁悶的、同時也花了我將近兩個小時才解決的問題----空間首頁發生“二次回調”(感謝網友的指正,本文中所指的二次回調指的是首頁被請求了兩次)了

先說說造成二次請求的元兇:Image控件的ImageUrl屬性!

通常,我們都用Image控件來顯示圖片,圖片的路徑就是通過ImageUrl來指定的,這都沒錯,但是,如果用了Image控件,又不給ImageUrl賦值,二次請求的問題就來了。

Image控件被服務器解析后,ImageUrl會被轉換成img的src屬性用來標識圖片的路徑,瀏覽器會根據src屬性來請求圖片。當src屬性為空時,瀏覽器會請求當前頁面,這就造成了二次回調。這個回調還是一個標準的PostBack,雖然這個PostBack不影響現有頁面,但是這個PostBack會向服務器再請求一次頁面,必然會給服務器帶來額外的壓力。

解決方法:如果使用了Image控件,請務必給ImageUrl賦值!

=================================================================

感謝木野狐(Neil Chen)對這個問題做出的更加地道的解釋:

問題的根本原因在于,HTML 中 <img /> 如果不設置 src 屬性沒有關系,但是如果設置一個空字符串作為該屬性的值:
<img src="" />
這時就相當于有了一個默認值為 "./", 也就是對當前目錄下默認文檔的請求。

所以,當圖片加載時,會根據 src 指定的值去讀取這個 url 的輸出,這里只是發出了一個 GET 請求,而不是 POST, 所以沒有 Postback 一說。

而你恰好測試的是網站首頁,正好是該目錄的默認文檔,所以就被 "./" 這個路徑給引用到了。

你可以用一個簡單的 HTML page 來測試,而不用 aspx,就會很明了了。

最后的結論是,這個問題不能怨 asp.net,也不能怨 ImageUrl 控件,充其量只能怪它多輸出了一個無用的 url="" 屬性(在沒有指定 ImageUrl 的情況下),其最壞結果也只是多發出了一次對該目錄下默認文檔的請求而已,并不會帶來什么嚴重后果。

=================================================================

其中對于木兄說的“并不會帶來什么嚴重后果”,我還是有點疑問:這個原本對圖片的請求被轉移到請求頁面上了,如果被請求頁面的Page_Load事件中有影響性能或功能的代碼,這難道不會給網站的性能和功能帶來影響?

?

在下圖,通過分析Request Header中的Accept,不難發現瀏覽器第一次請求服務器時是正常的請求(text/html,application/xhtml+xml),第二次則是在請求圖片(image/png,image/*):


?

下面簡單的說說揪出元兇的過程:

1.? 排除瀏覽器導致二次請求的可能性:由于是在Firefox中發現問題的,于是用IE打開頁面,用HttpAnalyzer監聽發現二次回調還是存在

2.? 排除MasterPage導致二次請求的可能性:由于頁面用到了MasterPage,打開其他也使用同意個MasterPage的頁面,仔細檢查發現除首頁外,其他頁面不存在二次請求的問題,排除MasterPage出錯的可能性

3.? 排除Javascript導致二次請求的可能性:在Firebug中,把Javascript禁用后,刷新頁面,發現二次請求還是存在

4.? 排除后臺代碼導致二次請求的可能性:把后臺代碼全部注釋,刷新頁面,發現二次請求還是存在

5.? 經過上面的排除法,現在只剩下前臺頁面的造成二次請求的可能性了,雖然頁面代碼不少,但為了解決問題,還是硬著頭皮上:經過漫長的注釋前臺代碼,刷新頁面,功夫不負有心人,終于讓我發現原來是asp:Image造成了二次請求!

有興趣的朋友,可以點擊下載代碼實驗一下!

轉載于:https://www.cnblogs.com/jailu/archive/2008/12/24/1361863.html

總結

以上是生活随笔為你收集整理的[原]请留心asp:Image控件中的ImageUrl属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。