GDI +中发生了一般错误

时间:2010-06-09 19:23:49

标签: c# asp.net gdi+

  

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

这是我关注的例子

7 个答案:

答案 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)

当文件已经存在时,这发生在我身上。保存前删除文件解决了问题。多么令人难以置信的无益错误信息。