前言:

  今天项目发布上线,发布到正式环境验证功能的时候忽然方向之前做的一个图片合成的功能报错了提示:System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。也就是说应用的System.Drawing中的Bitmap的这个类中的属性出了问题,这到底是什么问题呢?首先我本地开发,测试环境都可以正常的,为什么已发布到正式环境就有问题了呢,到底是环境问题还是配置权限的问题呢?

代码如下:

        /// <summary>
/// 合成图片
/// </summary>
/// <param name="backgroundImage">背景图</param>
/// <param name="qrCodeImg">二维码图片</param>
/// <param name="savePhysicalPath">图片存放物理路径</param>
/// <param name="xDeviation">绘制图像X轴偏差</param>
/// <param name="yDeviation">绘制图像Y轴偏差</param>
/// <param name="width">绘制图像宽</param>
/// <param name="height">绘制图像高</param>
/// <returns></returns>
public string CompositePicture(Image backgroundImage, Image qrCodeImg, string savePhysicalPath, int xDeviation = 0, int yDeviation = 0, int width = 0, int height = 0)
{
Bitmap bitmap = new Bitmap(backgroundImage.Width, backgroundImage.Height);
Graphics graphics = Graphics.FromImage(bitmap);//绘图
graphics.Clear(Color.White);
SolidBrush surush = new SolidBrush(Color.White);
graphics.DrawImage(backgroundImage, 0, 0, backgroundImage.Width, backgroundImage.Height);
graphics.DrawImage(qrCodeImg, xDeviation, yDeviation, width, height);
GC.Collect();//垃圾清理 string compositePictureUrl = savePhysicalPath + Guid.NewGuid().ToString() + ".jpg";
//合成图片保存
bitmap.Save(compositePictureUrl, System.Drawing.Imaging.ImageFormat.Jpeg); return compositePictureUrl;
}

解决方案:

1、首先我排除了一下线上服务器是否存在savePhysicalPath图片存放的物理路径(我发布合成的图片保存的物理物理为/Content/Image)查看确实存在,因为之前在程序中写过判断文件夹是否存在不存在创建文件夹的逻辑。

            if (!Directory.Exists(savePhysicalPath))
{
Directory.CreateDirectory(savePhysicalPath);
}

2、判断文件Image是否存在读写的权限(让服务器管理员查了下果然是没有权限的),把权限的读写权限开通后就一切正常了。

【排除解决】System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误的更多相关文章

  1. ExternalException (0x80004005): GDI+ 中发生一般性错误

    .net开发的程序用了一个自绘的框架, 平常部署到IIS上都没有问题,今天突然之间这个功能就运行不起来了. 报错:GDI+错误,然后在本地的VS里面运行是没有问题的 百度出来的改Path环境变量.注册 ...

  2. “ExternalException (0x80004005): GDI+ 中发生一般性错误”的问题 .

     原因一般是写入文件时,.net没有该目录的写入权限. 解决方案:增加iis(对aspx而言)对该目录的写入权限.

  3. GDI+ 中发生一般性错误。

    GDI+ 中发生一般性错误. “/wechat”应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及 ...

  4. GDI+中发生一般性错误的解决办法(转帖)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常.于是开始“ ...

  5. 【转】GDI+中发生一般性错误的解决办法

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现“GDI+中发生一般性错误”的异常. 于是开始 ...

  6. GDI+中发生一般性错误的解决办法(转)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...

  7. GDI+中发生一般性错误的解决办法(转载)

    今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...

  8. gdi+ 中发生一般性错误 wpf解决方法

    错误背景:原来在winform程序中写了一个窗口,在wpf应用程序中调用显示了这个窗口,有个头像功能,加载本地的一个图片文件,加载前进行了各种逻辑判断,效果如下: 而加载的关键代码如下面: pictu ...

  9. C# .NET开发图形图像程序时提示"GDI+ 中发生一般性错误"

    今天突然收到一封信,说我那个极度复杂的Marshal的问题被解决了(http://www.cnblogs.com/hotcan/archive/2005/01/12/91007.html).顿时感觉好 ...

随机推荐

  1. kube-router代替kube-proxy+calico

    使用kubeadm安装kubernetes,并使用kube-router代替kube-proxy+calico网络. 即:kube-router providing service proxy, fi ...

  2. Git 简介与仓库使用

    1. Git 简介 2. 远程仓库的使用 3. 本地仓库的使用 1. Git 简介 Git 是分布式版本控制系统,同一个 Git 仓库,可以分布到不同的机器上. 其原理是首先找一台电脑充当服务器的角色 ...

  3. 1003 Emergency (25分)

    As an emergency rescue team leader of a city, you are given a special map of your country. The map s ...

  4. 详解JavaScript中的正则表达式

    实际工作中,JavaScript正则表达式还是经常用到的.所以这部分的知识是非常重要的. 一.基础语法: 第一种:字面量语法 var expression=/pattern/flags; 第二种:Re ...

  5. 光猫和路由器都支持ipv6,却无法使用ipv6?

    这些年很多地方的光猫都能获得ipv6地址了,而且新出的路由基本都支持ipv6,但是还是有很多人在http://test-ipv6.com看不到自己的ipv6地址,也上不了ipv6网站. 我也遇到这个问 ...

  6. hdu3870 基于最短路的最小割

    题意:      给你一个平面图,让你输出(1,1),(n ,n)的最小割.. 思路:       看完题想都没想直接最大流,结果TLE,想想也是 G<400*400,400*400*4> ...

  7. UVA11427玩纸牌(全概率+递推)

    题意:       一个人玩纸牌游戏,他每天最多玩n局,枚举获胜的概率是a/b,每天玩牌只要获胜概率达到p,那么他今天就不玩了,明天接着玩,如果有一天他的概率没有达到p,(没有达到p的话他今天一定是玩 ...

  8. APP的编译和反编译

    目录 Apktool的准备 Apktool解压APP Apktool打包APP 对APP进行签名

  9. 发现Webpack中泄露的api

    发现Webpack中泄露的api 目录 发现Webpack中泄露的api 1 - 安装 reverse-sourcemap 2 - 寻找xxx.js.map 3 - 下载xxx.js.map并获取所有 ...

  10. CTFHub-easy_search

    easy_search 玩了好些天,今天做道题找找状态,明天开始肝了 打开是一个登录框 用amdin/admin尝试了一下,提示登陆失败 这里肯定不会是暴力破解,我猜是sql注入,试了万能密码or 1 ...