2012-01-26 71 views

回答

0

您可以使用Uri.TryCreate method驗證URI是否有效。

您不應該檢查圖像是否存在於您的ASP.Net應用程序中。下載圖像是瀏覽器的工作。您可以添加javascript以允許瀏覽器使用默認圖像替換丟失的圖像,如this question中所述。

0

單靠使用asp:Image控件無法做到這一點。但是,只需稍加額外的工作,就可以使用ASHX處理程序爲圖像製作程序化的HttpRequest(例如,使用查詢字符串中的圖像)。如果HttpRequest成功,則可以將圖像傳輸到響應。

如果HttpRequest返回404狀態,則可以替代另一個預定義的圖像。

但是,這就像使用大錘破解堅果,不應該在整個網站廣泛使用,因爲它可能會創建一個重要的負載 - 本質上,你要求服務器(而不是用戶的瀏覽器)下載圖片。如果不謹慎實施,它也可能成爲潛在的XSS安全風險。

對於個別情況,特別是當您實際需要在本地保留請求的圖像時,情況會很好。請求的任何圖像都應寫入磁盤,以便將來的請求可以處理先前保留的圖像。

顯然,Javascript也是一個解決方案,但我提到上述可能性,這取決於需求。

0
class MyClient : WebClient 
{ 
    public bool HeadOnly { get; set; } 
    protected override WebRequest GetWebRequest(Uri address) 
    { 
     WebRequest req = base.GetWebRequest(address); 
     if (HeadOnly && req.Method == "GET") 
     { 
      req.Method = "HEAD"; 
     } 
     return req; 
    } 
} 


private bool headOnly; 
public bool HeadOnly { 
    get {return headOnly;} 
    set {headOnly = value;} 
} 


using(var client = new MyClient()) { 
    client.HeadOnly = true; 
    // fine, no content downloaded 
    string s1 = client.DownloadString("http://google.com"); 
    // throws 404 
    string s2 = client.DownloadString("http://google.com/silly"); 
} 

試試這個!