Обработчик изображений ASHX случайным образом показывает/скрывает изображения

Я создал обработчик изображений ASHX, который извлекает изображения, хранящиеся на сервере SQL. Он прекрасно работает, если я покажу изображение отдельно. Но если я попытаюсь показать их в сетке и показать много изображений одновременно, некоторые изображения не будут отображаться случайным образом.

Когда я пытался обновить страницу, некоторые изображения исчезали, а некоторые снова появлялись. Он полностью отображает изображения случайным образом. Пожалуйста, смотрите изображение ниже для 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
}

person TTCG    schedule 04.10.2012    source источник
comment
возможно, у вас есть проблема - object obj = db.ExecuteScalar(cmd);   -  person marko    schedule 04.10.2012
comment
Точно Марко. Откуда ты это сразу знаешь?   -  person TTCG    schedule 04.10.2012


Ответы (1)


Я задавал аналогичный вопрос здесь:

Потоковая передача изображений из базы данных с помощью HttpHandler

Вместо этого я использовал DataReader, и это решило мою проблему с изображениями, которые не все отображались.

person IrishChieftain    schedule 04.10.2012