SQLServerに保存されている画像を抽出するASHX画像ハンドラーを作成しました。画像を分けて見せれば綺麗に動作します。しかし、それらをグリッドに表示して同時に多くの画像を表示しようとすると、一部の画像がランダムに表示されません。
ページを更新しようとすると、一部の画像が消え、一部が再び表示されます。画像を完全にランダムにレンダリングしています。4つのスクリーンショットについては、下の画像を参照してください。
以下は、ハンドラーの私のコードです。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
}