2012-10-04 182 views
0

我構建了ASHX圖像處理程序,它提取存儲在SQL Server中的圖像。如果我單獨顯示圖像,它的效果非常好。但是,如果我嘗試在網格中顯示它們並同時顯示許多圖片,則某些圖片不會隨機顯示。ASHX圖像處理程序隨機顯示/隱藏圖像

當我嘗試刷新頁面時,一些圖像消失,而一些圖像再次出現。它完全呈現隨機圖像。請參閱下面的圖片獲取4個屏幕截圖。

enter image description here

以下是我對處理程序代碼。我試圖改變IsReusable True False,但沒有運氣。你能否告訴我我該如何解決這個問題?謝謝。

public class Photo : IHttpHandler 
{ 

    #region IHttpHandler Members 

    public bool IsReusable 
    {    
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     HttpRequest request = context.Request; 

     if (!string.IsNullOrEmpty(request.QueryString["id"]) && !string.IsNullOrEmpty(request.QueryString["type"])) 
     { 
      //this hash table contain the SP parameter 
      DAMSSQL db = DAMSSQL.GetInstance("DBName"); 

      SqlCommand cmd = new SqlCommand("dbo.GetImage"); 
      cmd.Parameters.Add("@ID", SqlDbType.Int).Value = int.Parse(request.QueryString["id"]); 
      cmd.Parameters.Add("@Type", SqlDbType.Int).Value = int.Parse(request.QueryString["type"]); 

      object obj = db.ExecuteScalar(cmd); 

      if (obj != null) 
      { 
       byte[] imageArray = (byte[])obj; 

       //checking byte[] 
       if (imageArray != null && imageArray.Length > 0) 
       { 
        context.Response.ContentType = "image/jpeg"; 
        context.Response.BinaryWrite(imageArray); 
       } 
      } 
      else 
      { 
       context.Response.StatusCode = 404; 
       context.Response.StatusDescription = "The requested image is not found in the system."; 
       context.Response.End(); 

      } 
     } 
     else 
     { 
      context.Response.StatusCode = 500; 
      context.Response.StatusDescription = "The incoming parameters are not correct."; 
      context.Response.End();     
     } 
    } 

    #endregion 
} 
+1

這是可以合適的,你有一個問題 - 對象obj = db.ExecuteScalar(cmd);正確的馬爾科。 – marko

+0

正確的馬爾科。你怎麼知道它馬上? – TTCG

回答