日期:2014-05-17  浏览次数:20604 次

求助 GDI+ 中发生一般性错误...
程序在debug调试时图片保存没有问题 发布后(iis7)出现“GDI+ 中发生一般性错误”vista系统

已按网上搜索方法
1.赋予 NETWORK SERVICE 帐户以写权限。
2.保存目录确认存在
未能解决

不涉及打开 只需要保存图片
请帮忙看看 谢谢

代码如下:
C# code

if (this.FileUpload.PostedFile.ContentType.ToLower().IndexOf("image") < 0)
        {
            Response.Write("<script>alert('上传图片格式无效');</script>");
            return;
        }
        else
        {
            //生成原图 
            Byte[] oFileByte = new byte[this.FileUpload.PostedFile.ContentLength];
            System.IO.Stream oStream = this.FileUpload.PostedFile.InputStream;
            System.Drawing.Image oImage = System.Drawing.Image.FromStream(oStream);
            int oWidth = oImage.Width; //原图宽度 
            int oHeight = oImage.Height; //原图高度 
            int tWidth = 100; //设置缩略图初始宽度 
            int tHeight = 100; //设置缩略图初始高度
            //按比例计算出缩略图的宽度和高度 
            if (oWidth >= oHeight)
            {
                tHeight = (int)Math.Floor(Convert.ToDouble(oHeight) * (Convert.ToDouble(tWidth) / Convert.ToDouble(oWidth)));
            }
            else
            {
                tWidth = (int)Math.Floor(Convert.ToDouble(oWidth) * (Convert.ToDouble(tHeight) / Convert.ToDouble(oHeight)));
            }
            //生成缩略原图 
            Bitmap tImage = new Bitmap(tWidth, tHeight);
            Graphics g = Graphics.FromImage(tImage);
            g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; //设置高质量插值法 
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;//设置高质量,低速度呈现平滑程度 
            g.Clear(Color.Transparent); //清空画布并以透明背景色填充 
            g.DrawImage(oImage, new Rectangle(0, 0, tWidth, tHeight), new Rectangle(0, 0, oWidth, oHeight), GraphicsUnit.Pixel);

            string dataOName = "o" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";
            string dataTName = "t" + DateTime.Now.ToShortDateString().Replace("-", "") + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + ".jpg";

            string oFullName = Server.MapPath(".") + "/upload/" + dataOName; //原图 
            string tFullName = Server.MapPath(".") + "/upload/" + dataTName; //缩略图

            

            string dirpath = Server.MapPath(".") + "/upload";
            if (!Directory.Exists(dirpath))
                Directory.CreateDirectory(dirpath);

            try
            {
                //以JPG格式保存图片 
                oImage.Save(oFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
                tImage.Save(tFullName, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                //释放资源 
                oImage.Dispose();
                g.Dispose();
                tImage.Dispose();
            }
        }



堆栈跟踪: 


[ExternalException (0x80004005): GDI+ 中发生一般性错误。]
  system_product_product_insert.submit_Click(Object sender, EventArgs e) +2868
  System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
  System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
  System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
  System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)