【问题标题】:Trying to call third party dll from Azure Function V2 I get an exception尝试从 Azure Function V2 调用第三方 dll 时出现异常
【发布时间】:2018-10-23 08:15:36
【问题描述】:

我严格遵循这个示例:https://odetocode.com/blogs/scott/archive/2018/02/14/pdf-generation-in-azure-functions-v2.aspx

我从 DinkToPdf repository下载三个文件

问题是当我添加 32 位或 64 位 DLL 时,我收到以下错误:

发生了一个或多个错误。 (尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B))

尤其是这段代码:

private static byte[] BuildPdf(string html)
    {
        byte[] arr = null;

        try
        {
            arr = pdfConverter.Convert(new HtmlToPdfDocument() { Objects = { new ObjectSettings { HtmlContent = html } } });
        }
        catch (Exception ex)
        {
            System.Diagnostics.Debug.WriteLine(ex);
        }

        return arr;
    }

我的 Azure Function V2 .net Core 项目设置为任何 CPU,没有其他选项。我在 Stack Overflow 上看到其他有关此错误的帖子,我觉得这有所不同,因为其他人正在谈论两个可以控制的项目并且架构存在一些差异,但这里我只指出一些二进制文件,不管是否他们是 32 或 64 错误仍然存​​在。我还看到有些人更改了 IIS 的设置,而我没有这样的设置。有任何想法吗?谢谢!

【问题讨论】:

标签: c# .net azure azure-functions wkhtmltopdf


【解决方案1】:

发生了一个或多个错误。 (尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B))

此错误是由使用 64 位 dll 引起的。默认情况下,VS 使用 32 位函数 CLI,因此会出现错误。位不是问题,我们可以使用 x64 CLI 和several steps

问题是一个棘手的错误Qt: Could not initialize OLE (error 80070005)

当我们的 html 内容有一些 javascript 标签或引用时,函数会挂起。请参阅test done by Travis。当 js 被删除时,函数成功返回 PDF,但错误消息仍然存在。(我认为这并不重要,因为我们得到了预期的完整 PDF。)

如果这个限制是不可接受的,安装包OpenHtmlToPdf,改变你的代码如下。你也可以试试other packages

private static byte[] BuildPdf(string html)
{
    return Pdf.From(html).Content();
}

请注意,此方法不适用于 Function on Consumption 计划或 Free App 服务计划。

【讨论】:

  • 但我想生成一个图像,而不是 PDF。另外我使用的是 32 位二进制文​​件,而不是 64 位的
  • @nmrlqa4 我没有看到这篇文章中提到的图像,所以我只是按照代码 sn-p buildpdf。只是找到你的帖子询问如何生成图像,DinkToPdf 没有能力将 html 转换为图像,所以你可能会忘记所有这些错误并专注于旧帖子?如果您仍然需要帮助,稍后我可以在该帖子中发布我的解决方案供您参考。
猜你喜欢
  • 2018-08-16
  • 2020-02-24
  • 1970-01-01
  • 1970-01-01
  • 2012-09-10
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多