【问题标题】:A generic error occurred in GDI+GDI+ 中出现一般错误
【发布时间】:2011-03-01 20:25:39
【问题描述】:

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

这是我正在关注的示例

【问题讨论】:

  • 你忘了问问题。

标签: c# asp.net gdi+


【解决方案1】:

查看System.Drawing 文档中的大“警告”说明。当您在服务进程中使用用于桌面处理的东西时,可能会发生各种奇怪的事情。

检查权限、路径存在、框架版本等常规信息。

【讨论】:

    【解决方案2】:

    这对我有用。写入 MemoryStream,然后将 MemoryStream 写入输出。推理和代码在这里:https://weblog.west-wind.com/posts/2006/Oct/19/Common-Problems-with-rendering-Bitmaps-into-ASPNET-OutputStream

    【讨论】:

    【解决方案3】:

    我将图像重载方法更改为

    Image.Save(context.HttpContext.Response.OutputStream, ImageCodecInfo 编码器, EncoderParameters encoderParams)

    之前我使用 Image.Save(context.HttpContext.Response.OutputStream,ImageFormat)

    更改 save 的重载方法后,它修复了错误。

    【讨论】:

      【解决方案4】:

      我以管理员身份在 Windows 7 机器上安装了我的应用程序。

      这对我有用。

      【讨论】:

        【解决方案5】:

        不久前我也遇到过类似的事情……通常与安全有关。不要从 dev 复制 png,(如果有的话)服务器可能无法覆盖并确保 asp 进程对您尝试保存的目录具有写入权限。

        【讨论】:

          【解决方案6】:

          可能是 asp.net 工作进程没有权限创建文件,您试图将图像保存在服务器上。

          【讨论】:

          • Image.Save(context.HttpContext.Response.OutputStream, ImageFormat);这就是我正在写的输出流。
          【解决方案7】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-01-21
            相关资源
            最近更新 更多