Я использую пользовательский HxtpHandler из Ashx для получения изображений GIF из базы данных и отображения их на веб-сайте - когда изображение существует, оно отлично работает.
Однако бывают случаи, когда изображение не существует, и я хотел бы, чтобы html-таблица, содержащая изображение, стала невидимой, поэтому значок «изображение не найдено» не отображается.
Но поскольку HttpHandler не является синхронным, все мои попытки проверить размер изображения в Page_Load были провалены.Любые идеи о том, как это можно сделать?
РЕДАКТИРОВАТЬ ::
Вот как это происходит до сих пор:
Это мой обработчик:
public void ProcessRequest(HttpContext context)
{
using (Image image = GetImage(context.Request.QueryString["id"]))
{
context.Response.ContentType = "image/gif";
image.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif);
}
}
private Image GetImage(string id)
{
try
{
System.IO.MemoryStream ms;
byte[] rawImage;
Image finalImage;
// Database specific code!
rawImage = getImageFromDataBase(id);
ms = new System.IO.MemoryStream(rawImage, 0, rawImage.Length);
ms.Write(rawImage, 0, rawImage.Length);
finalImage = System.Drawing.Image.FromStream(ms, true);
return finalImage;
}
catch (Exception ex)
{
System.Console.WriteLine("ERROR:::: " + ex.Message);
return null;
}
}
И я использую это так:
myImage.ImageUrl = "Image.ashx?id=" + properId;