При попытке вызвать стороннюю dll из Azure Function V2 я получаю исключение - PullRequest
0 голосов
/ 23 октября 2018

Я строго следую этому примеру: https://odetocode.com/blogs/scott/archive/2018/02/14/pdf-generation-in-azure-functions-v2.aspx

Я загружаю три файла из хранилища DinkToPdf

Проблема в том, что я добавляю 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 V2Проект .net Core имеет значение «Любой ЦП», без выбора других.Я видел другие посты в Stack Overflow об этой ошибке, и я чувствую, что это отличается, потому что другие люди говорят о двух проектах, которые имеют контроль, и есть некоторые различия в архитектуре, но здесь я просто указываю на несколько двоичных файлов, и неважно,они 32 или 64 ошибка остается.Также я увидел, что некоторые люди меняют настройки IIS, а у меня их нет.Есть идеи?Спасибо!

enter image description here

1 Ответ

0 голосов
/ 25 октября 2018

Произошла одна или несколько ошибок.(Была предпринята попытка загрузить программу с неверным форматом. (Исключение из HRESULT: 0x8007000B))

Эта ошибка вызвана использованием 64-битной DLL.По умолчанию VS работает с 32-битным Function CLI, поэтому ожидается ошибка.Бит не проблема, мы можем использовать x64 CLI с несколькими шагами .

Проблема в одной хитрой ошибке Qt: Could not initialize OLE (error 80070005).

Функция зависает, когда наш html-контент имеетнекоторые теги или ссылки javascript.См. тест, выполненный Travis .Когда js удаляется, функция возвращает PDF успешно, но сообщение об ошибке сохраняется (я предполагаю, что это не имеет значения, поскольку мы получаем полный PDF, как и ожидалось.)

Если это ограничение неприемлемо, установите пакет OpenHtmlToPdf , измените код, как показано ниже.Также вы можете попробовать другие пакеты .

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

Обратите внимание, что этот метод не работает в функции в плане потребления или в плане обслуживания бесплатного приложения.

...