GDI +中发生了一般错误
[ExternalException(0x80004005):GDI +中发生一般错误。] System.Drawing.Image.Save(Stream stream,ImageCodecInfo encoder,EncoderParameters encoderParams)+615257
我有一个网页,其中pdf转换为png,并使用response.outputstream 它显示。当我在我的本地机器上运行它是正常的。但是当我在服务器上运行相同的代码时会抛出此异常。
我的问题是,我可以在哪里寻找错误。因为没有提供内部例外或任何其他信息。唯一的线索就是它正在Image.Save上发生,但是同样的代码在我的本地机器上运行得很好,那么你是不是在生产呢?
http://blog.maartenballiauw.be/post/2008/05/13/ASPNET-MVC-custom-ActionResult.aspx
这是我关注的例子
答案 0 :(得分:4)
查看System.Drawing文档中的重要“注意”说明。当您在服务流程中使用用于桌面处理的内容时,可能会发生各种奇怪的事情。
检查通常的权限,路径存在,框架版本等。
答案 1 :(得分:4)
这对我有用。写入MemoryStream然后将MemoryStream写入输出。推理和代码在这里:https://weblog.west-wind.com/posts/2006/Oct/19/Common-Problems-with-rendering-Bitmaps-into-ASPNET-OutputStream
答案 2 :(得分:3)
我将我的Image over load方法更改为
Image.Save(context.HttpContext.Response.OutputStream,ImageCodecInfo encoder,EncoderParameters encoderParams)
之前我使用的是Image.Save(context.HttpContext.Response.OutputStream,ImageFormat)
更改了保存的重载方法后,修复了错误。
答案 3 :(得分:1)
我以管理员身份运行在Windows 7计算机上安装了我的应用程序。
这对我有用。
答案 4 :(得分:0)
我曾经有类似的东西...通常与安全有关。不要从dev复制png,(如果你有的话)服务器可能无法覆盖并确保asp proccess对你试图保存的目录有写访问权限。
答案 5 :(得分:0)
可能是asp.net工作进程没有permision来创建一个文件,你试图在服务器上保存图像。
答案 6 :(得分:0)
当文件已经存在时,这发生在我身上。保存前删除文件解决了问题。多么令人难以置信的无益错误信息。