[英]Images show in Design View of Visual Studio but not in Browser
[英]Webservice sourced images show as ? in certain versions of stock Android Browser
我試圖使用頁面綁定數據時呈現到路徑中的ID動態地獲取圖像。 但是,圖像在方框[?]中顯示為藍色問號。 圖像可以在iOS,Mobile Chrome,較舊版本的Android瀏覽器(2.3),較新版本的Android瀏覽器(4.2.2)和台式機上的IE / Firefox / Chrome上正常加載。 僅到目前為止,此問題僅在Android 4.0和4.1上出現。
這就是我試圖加載圖像的方式:
例如 <img src="../services/getImage?id=f6c799b2-ff31-4fbc-abc9-31f20d5e69c8">
此請求命中如下所示的.NET Web服務(IHttpAsyncHandler實現)
public virtual UploadedImage getImage(Guid imageId) { string eTag; Entities.Image.DTO image = null; if ( image = //get image entity ) { eTag = Delta.Crypto.CreateMD5Hash(image.ModifiedDate.ToEpoch().ToString()); if (Request.Headers[HTTPRequestHeaderKeys.IfNoneMatch].IsNotNullOrEmpty() && Request.Headers[HTTPRequestHeaderKeys.IfNoneMatch] == eTag) { this.RespondWithNoUpdate(); return null; } if (image.ImageUrl.IsNullOrEmpty() || image.ImageContent == null || image.ImageContent.Length == 0) { this.RespondWithNotFound(); return null; } Response.AddHeader(HTTPResponseHeaderKeys.ETag, eTag); return new UploadedImage() { contentType = "image/" + System.IO.Path.GetExtension(image.ImageUrl).ToLower().Substring(1), fileContents = image.ImageContent, fileName = image.ImageUrl }; } return null;
因此,我們使用文件擴展名設置了mime類型,這可能不是100%可靠的,但是我已經確認在這種情況下是正確的。
這是我的台式機Chrome瀏覽器上的請求和成功響應的副本請求: Accept:image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8,es;q=0.6 Connection:keep-alive Host:localhost Referer:http://localhost/delta/events/bigevent/app/event.html User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36
響應:
Cache-Control:no-cache Content-Disposition:inline; filename="2dab739b-a06c-4579-8555-0598d738f858_eventApplayoutContainerEventApplicationlandingScreenImageContainer_background-image.png" Content-Length:236 Content-Type:image/png Date:Tue, 11 Feb 2014 19:53:31 GMT ETag:1c79507d4969ea7534f3068ca1e60be4 Expires:-1 Pragma:no-cache
我唯一的猜測是,當以這種方式請求圖像時,img控件在渲染時不知道mime類型,因此在抱怨。
注意:直接訪問(在單獨的選項卡中)時,請求確實在Android瀏覽器上成功。
有誰知道導致[?]和潛在解決方案的原因? 我沒有找到太多,如果有任何文檔在股票瀏覽器上。 如果您有一些文檔的鏈接,也將不勝感激。 謝謝!
編輯:我應該注意具有相對路徑的資源圖像正在加載好
Ex. <img src="../images/EmptyProfile.png">
我實際上能夠弄清楚這一點。
問題的根源在於,這些版本的Android瀏覽器未隨請求一起發送Accept標頭。
我的Web服務嘗試根據客戶端首選項來協商內容交付類型。 沒有默認值。
希望這對以后的人有所幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.