EVOPDF word to pdf EvoWordToPdf.WordConvertException: не удалось инициализировать конвертер документов Word - PullRequest
0 голосов
/ 06 марта 2020

Редактировать: Ссылка на класс исключений

У меня есть приложение, которое использует EvoWordToPdf и .net core 3 webp api. У меня проблема с инициализацией конвертера с memory stream. Все отлично работает в моем местном окружении. Однако в производственной среде я получаю эту ошибку.

Включена трассировка стека

Произошло необработанное исключение при выполнении запроса.

Исключение: EvoWordToPdf.WordConvertException: Не удалось инициализируйте конвертер документов Word в EvoWordToPdf.WordToPdfConverter. ᜀ (Поток A_0, Строка A_1, Int32 A_2, Int32 A_3) в EvoWordToPdf.WordToPdfConverter. Stream (Поток A_0, Поток A_1, String A_2, Int32 AOTO_2) в формате A_2 для AO_2 .ᜁ (Поток A_0, Строка A_1, Int32 A_2, Int32 A_3) в EvoWordToPdf.WordToPdfConverter.ConvertWordStream (Поток wordStream, Строковый пароль, Int32 startPageIndex, Int32 endPageIndex) в EvoWordToPdf.WordSt.Conf. Services. nz \ Allianz \ Controllers \ ExportController.cs: строка 48 в lambda_method (закрытие, объект, объект []) в Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute (цель объекта, параметры Object []) в Microsoft.AspNetCore. Mvc .Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute (сопоставитель IActionResultTypeMapper, исполнитель ObjectMethodExecutor, объектный контроллер, аргументы Object []) в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInspGoregable_1. . Mvc .Infrastructure.ControllerActionInvoker. g__Awaited | 10_0 (вызывающий ControllerActionInvoker, задача lastTask, следующее состояние, область действия области, состояние объекта, логическое значение isCompleted) в Microsoft.AspNetCore. Mvc .Infrastructure.ControlaledStevConv. context) в Microsoft.AspNetCore. Mvc .Infrastructure.ControllerActionInvoker.Next (State & next, Scope & scope, Object & state, Boolean & isCompleted)
в Microsoft.AspNe tCore. Mvc .Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsyn c () --- Конец трассировки стека из предыдущего расположения, где было сгенерировано исключение --- в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker. g__Awaited | 24_0 (ResourceInvoker invoker, Task lastTask, State next, Область действия, Состояние объекта, Boolean isCompleted) в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker.Rethrow (контекст ResourceExecutedContextSealed) в Microsoft.AspNetCore. * 1054 .In. ResourceInvoker.Next (State & next, Область и область действия, Объект и состояние, Boolean & isCompleted)
в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker. g__Awaited | 19_0 (Средство вызова ResourceInvoker, Задача lastTask, State next, Область действия , Состояние объекта, Boolean isCompleted) в Microsoft.AspNetCore. Mvc .Infrastructure.ResourceInvoker. g__Logged | 17_1 (ResourceInvoker invoker) в Microsoft.AspNetCore.Routing.EndpointMiddleware. g__AwaitRepoint_quest0ask. requestTask, я Регистратор журналирования) в Microsoft.AspNetCore.Session.SessionMiddleware.Invoke (контекст HttpContext) в Microsoft.AspNetCore.Session.SessionMiddleware.Invoke (контекст HttpContext) в Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invote.uptext.Inteke. <> c. <<Configure> b__5_0> d.MoveNext () в C: \ Dev \ Allianz \ Allianz \ Startup.cs: строка 53 --- Конец трассировки стека из предыдущего местоположения, где было сгенерировано исключение - - в Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke (HttpContext context) 101240Keywords123635906ApplicationRD0003FF18FD79Приложение 'D: \ home \ site \ wwwroot \' было переработано после обнаружения app_offline.htm.Process Id: 11308.Файл версии: 13.0.19350.2. Описание: IIS ASP. NET Основной модуль V2 Обработчик запросов. Фиксация: 561deb05ae2d6680206e3d4a6bc75de699585980103340Keywords123636484ApplicationRD0003FF18FD79Application 'MACHINE / WEBROOT / APPHOST / ALLIANZ-EXPORT' завершил работу. Код процесса: 11308..050 Версия: 13308..050. Описание: IIS ASP. NET Основной модуль V2 Обработчик запросов. Commit: 561deb05ae2d6680206e3d4a6bc75de699585980200040Keywords123639437ApplicationRD0003FF18FD79APPLICATION_MANAGER :: ~ APPLICATION_MANAGER | это = 055B7460 [TID 10568] [PID 11308] 416610Keywords123640984ApplicationRD0003FF18FD79IfFailRet (pNamedPipe-> Read ((BYTE *) & controlRequest, SizeOf (SnapshotHolderControlStruct))) не в функции CSnapshotHolder :: HandleNewPipeConnection: -2147024787416640Keywords123641109ApplicationRD0003FF18FD79Incoming-звонки трубы shutdown.102240Keywords123654734ApplicationRD0003FF18FD79.NET исполнительную версию 4.0.30319.0 - Профилировщик был успешно загружен. CLSID профилировщика: '{324F817A-7420-4E6D-B3C1-143FBED6D855}'. Идентификатор процесса (десятичное число): 24664. Идентификатор сообщения: [0x2507] .100010Keywords123659500ApplicationRD0003FF18FD79 [IM: 02A88D91-4D3E-4E3F-AB34-5F08EF4FB1BF] IfFailRet (функция CLogging ::reakStaticLoggingInstanceBringBenceBosting: -2147467259100010Keywords123659765ApplicationRD0003FF18FD79CInstrumentationMethod :: Initialize - не удалось инициализировать метод инструментария PID: 24664 час: 80004005 имя: метод инструментария точки останова производства103240Keywords123666328ApplicationRD0003FF18F , Описание: IIS ASP. NET Основной модуль V2 Обработчик запросов. Commit: 561deb05ae2d6680206e3d4a6bc75de699585980100010Keywords123668828ApplicationRD0003FF18FD79CInstrumentationMethod :: Initialize - не удалось инициализировать метод приборостроения PID: 25480 часы: 80131375 Название: Производство Breakpoint Instrumentation Method100010Keywords123678296ApplicationRD0003FF18FD79Category: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware EventId: 1 RequestID: 800000fb-0000-B400-b63f-84710c7967bb RequestPath: / Экспорт / GenerateRequisitionForm SpanId: 230d45cfb7d1354f TraceId: f3a234b6dbb66e4884ff861fcdb36496 ParentId: 0000000000000000

Итак, посмотрите на строку 109:

byte[] outPdfBuffer = wordToPdfConverter.ConvertWordStream(mem);
, возможно, я не думаю, что я не думаю, что у меня нет памяти правильный путь документа в производстве правильно.

Вот мой код.

    public void GenerateReqFormDocument()
    {
        var replacementText = GetReplacementText(_docText);

        byte[] byteArray = File.ReadAllBytes(_templateDoc);
        using (MemoryStream mem = new MemoryStream())
        {
            mem.Write(byteArray, 0, (int)byteArray.Length);
            using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(mem, true))
            {
                using (var sw = new StreamWriter(wordDoc.MainDocumentPart.GetStream(FileMode.Create)))
                {
                    sw.Write(replacementText);
                }
            }


            WordToPdfConverter wordToPdfConverter = new WordToPdfConverter();
            wordToPdfConverter.LicenseKey = "MY KEY ";

            byte[] outPdfBuffer = wordToPdfConverter.ConvertWordStream(mem); //This line throws the exception.

            using (MemoryStream pdfStream = new MemoryStream(outPdfBuffer))
            {
               ...
            }
        }
    }

Возможно, есть другой способ получить пути шаблона в производстве? Я получаю значения примерно так:

public ExportController(IHostingEnvironment hostEnv) {
        _rootPath = hostEnv.ContentRootPath;
        _templatePath = _rootPath + "\\Documents\\Templates\\RequisitionFormTemp.docx";
        ...
    }

Я не уверен, как отладить это, чтобы узнать, как исправить ошибку. Все работает нормально в моем местном окружении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...