Bitmap.Save上的ASP.NET错误"异常(0x80004005):GDI +中发生了一般错误."

Bat*_*atu 6 c# asp.net drawing gdi+ bitmap

我有一个函数,它首先从磁盘读取图像,调整大小,然后保存到另一个目录.

当我使用Bitmap.Save(目录+ theimagename)时,它返回错误,如我在问题标题中所述.

我检查了目录是否正确,并且该目录中不存在给定的图像名称.

奇怪的是,相同的代码在本地机器上运行良好.但是当我将它上传到我的共享主机空间时,它只是不起作用.

代码如下.

bmpOut = new Bitmap(Size, Size);
Graphics g = Graphics.FromImage(bmpOut);
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
g.FillRectangle(Brushes.White, 0, 0, Size, Size);
int topBottomPadding = 0; int leftRightPadding = 0;
if (Size > lnNewWidth + 1)
    leftRightPadding = Convert.ToInt32((Size - lnNewWidth) / 2);
else if (Size > lnNewHeight + 1)
    topBottomPadding = Convert.ToInt32((Size - lnNewHeight) / 2);
g.DrawImage(loBMP, leftRightPadding, topBottomPadding, lnNewWidth, lnNewHeight);
Bitmap bmp = new Bitmap(bmpOut);
if (bmp != null)
    bmp.Save(ResizedOutput); // C:\Inetpub\vhosts\DomainName\httpdocs\ProductImages\500px\gigabyte_ga_ep45_ds4_profilelarge[1].jpg
bmp.Dispose();
bmpOut.Dispose();
g.Dispose();
loBMP.Dispose();
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

[ExternalException (0x80004005): A generic error occurred in GDI+.]
   System.Drawing.Image.Save(String filename, ImageCodecInfo encoder, EncoderParameters encoderParams) +377630
   System.Drawing.Image.Save(String filename, ImageFormat format) +69
   System.Drawing.Image.Save(String filename) +25
   Utilities.ResizeImage(String fileName, String mode) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\App_Code\Utilities.cs:181
   Link.ToProductImage(String fileName) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\App_Code\Link.cs:79
   Product.PopulateControls(ProductDetails pd) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\Product.aspx.cs:37
   Product.Page_Load(Object sender, EventArgs e) in c:\inetpub\vhosts\batuhanakcay.com\httpdocs\Product.aspx.cs:20
Run Code Online (Sandbox Code Playgroud)

Adr*_*der 13

来自ASP Net - 服务器上的GDI +和SAVE JPG或BMP

99.9%的情况下,当使用GDI时,"发生一般错误"意味着您尝试保存的目录没有正确的权限.通常,您需要确保该目录允许asp.net修改文件.

你检查了权限吗?