Когда мои изображения загружаются из моей базы данных на моем веб-сервере, я вижу следующую ошибку:
В GDI + произошла общая ошибка.в System.Drawing.Image.Save (поток Stream, кодер ImageCodecInfo, EncoderParameters encoderParams) в System.Drawing.Image.Save (поток Stream, формат ImageFormat) в MyWeb.Helpers.ImageHandler.ProcessRequest (контекст HttpContext)
Все, что мой код пытается сделать, это загрузить изображение, кто-нибудь может взглянуть и сообщить мне, что я делаю неправильно?
Примечание. Это сработает, если я протестирую его на своем локальном компьютере., но не при развертывании на моем веб-сервере.
public void ProcessRequest(HttpContext context)
{
context.Response.Clear();
if (!String.IsNullOrEmpty(context.Request.QueryString["imageid"]))
{
int imageID = Convert.ToInt32(context.Request.QueryString["imageid"]);
int isThumbnail = Convert.ToInt32(context.Request.QueryString["thumbnail"]);
// Retrieve this image from the database
Image image = GetImage(imageID);
// Make it a thumbmail if requested
if (isThumbnail == 1)
{
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
image = image.GetThumbnailImage(200, 200, myCallback, IntPtr.Zero);
}
context.Response.ContentType = "image/png";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Png);
}
else
{
context.Response.ContentType = "text/html";
context.Response.Write("<p>Error: Image ID is not valid - image may have been deleted from the database.</p>");
}
}
Ошибка возникает в строке:
image.Save (context.Response.OutputStream, ImageFormat.Png);
ОБНОВЛЕНИЕ
Я изменил свой код на это, но проблема все еще возникает:
var db = new MyWebEntities();
var screenshotData = (from screenshots in db.screenshots
where screenshots.id == imageID
select new ImageModel
{
ID = screenshots.id,
Language = screenshots.language,
ScreenshotByte = screenshots.screen_shot,
ProjectID = screenshots.projects_ID
});
foreach (ImageModel info in screenshotData)
{
using (MemoryStream ms = new MemoryStream(info.ScreenshotByte))
{
Image image = Image.FromStream(ms);
// Make it a thumbmail if requested
if (isThumbnail == 1)
{
Image.GetThumbnailImageAbort myCallback = new Image.GetThumbnailImageAbort(ThumbnailCallback);
image = image.GetThumbnailImage(200, 200, myCallback, IntPtr.Zero);
}
context.Response.ContentType = "image/png";
// Save the image to the OutputStream
image.Save(context.Response.OutputStream, ImageFormat.Png);
} }
Спасибо.