Хорошо, я работал без остановки над этим и много занимался поиском.Я не могу отобразить свои изображения при извлечении их из базы данных.Если я пытаюсь перейти по ссылке на обработчик вручную, я получаю сообщение «Изображение [Изображение] не может быть отображено, поскольку оно содержит ошибки».У меня было несколько старых изображений в базе данных, и они сначала отображались правильно.Но теперь, если я обновлю изображения, я получу эту ошибку при попытке их просмотра.
Код загрузки.
if (fileuploadImage.HasFile)
{
if (IsValidImage(fileuploadImage))
{
int length = fileuploadImage.PostedFile.ContentLength;
byte[] imgbyte = new byte[length];
HttpPostedFile img = fileuploadImage.PostedFile;
img.InputStream.Read(imgbyte, 0, length);
if (mainImage == null)
{
ProfileImage image = new ProfileImage();
image.ImageName = txtImageName.Text;
image.ImageData = imgbyte;
image.ImageType = img.ContentType;
image.MainImage = true;
image.PersonID = personID;
if (image.CreateImage() <= 0)
{
SetError("There was an error uploading this image.");
}
}
else
{
mainImage.ImageName = txtImageName.Text;
mainImage.ImageType = img.ContentType;
mainImage.ImageData = imgbyte;
mainImage.MainImage = true;
mainImage.PersonID = personID;
if (!mainImage.UpdateImage())
{
SetError("There was an error uploading this image.");
}
}
}
else
{
SetError("Not a valid image type.");
}
Вот мой обработчик изображения:
public class ImageHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
}
public void ProcessRequest(HttpContext context)
{
int imageid = Parser.GetInt(context.Request.QueryString["ImID"]);
ProfileImage image = new ProfileImage(Parser.GetInt(imageid));
context.Response.ContentType = image.ImageType;
context.Response.Clear();
context.Response.BinaryWrite(image.ImageData);
context.Response.End();
}
И вот как я его называю "~ / ImageHandler.ashx? ImID= "+ Parser.GetString (image.ImageID)
Я использую тип данных Image на сервере sql для хранения этого.
Редактировать:
Я также узналчто если я помещаю попытку catch вокруг context.Response.end (), он выдает ошибку, говоря «Невозможно оценить код, потому что собственный фрейм ...»