Ошибка WkHtmlToXSharp в среде Windows Server 2008 R2 x64

WkHtmlToXSharp — это оболочка C# (использующая P/Invoke) для превосходной библиотеки преобразования Html в PDF wkhtmltopdf. https://github.com/TobiTonner/WkHtmlToXSharp

У меня есть два веб-сайта в промежуточной среде Windows Server 2008 R2 x64. Один из них позволяет сказать, что веб-сайт A версия веб-сайта, а другой - веб-сайт B.

Преобразование WkHtmlToXSharp работало в версии A, но когда я устанавливаю версию B, преобразование не работает в этой версии, я получаю сообщение об ошибке:

HtmlToPdf conversion failed: Failed loading page http://website/Convert (sometimes it will work just to ignore this error with --load-error-handling ignore)

Мне было интересно, почему это происходит, и я указал веб-сайту A, чтобы он заглянул в ту же папку, что и сайт B. И я был удивлен, что когда я запускаю A, конверсия работает хорошо там, но когда я испорчу B, я все равно получаю ту же ошибку, но самое смешное, что оба сайтов указали на один и тот же исходный код (папку). Мне просто интересно, почему так происходит. Оба веб-сайта имеют схожие конфигурации пула приложений, а для параметра «Включить 32-разрядные приложения» установлено слишком большое значение в боте из них. Также я пытался установить один и тот же пул приложений для обоих веб-сайтов, и все равно происходило то же самое, конверсия на сайте A работает, а на сайте B нет.

В моей локальной среде (Windows 7 x64), если я устанавливаю одни и те же конверсии веб-сайтов, работающие в обоих случаях.

Также я сделал некоторые изменения в коде, чтобы игнорировать ошибки: converter.ObjectSettings.Load.LoadErrorHandling = LoadErrorHandlingType.ignore; но это не исправляет ошибку, разница только в том, что теперь я получаю пустой pdf в случае конвертации на веб-сайте B.

Я просто думаю, может быть, это что-то в Windows Server, которое запрещает запускать/хранить в памяти две копии WkHtmlToXSharp.dll или wkhtmltopdf или что-то в этом роде.

Может быть, у кого-то есть какие-нибудь идеи по этому поводу?


person SomeTroubles    schedule 28.06.2011    source источник
comment
Я сталкиваюсь с аналогичной проблемой. Вы нашли решение для этого? Если да, пожалуйста, напишите мне.   -  person Żubrówka    schedule 16.04.2012


Ответы (1)


См. это https://github.com/pruiz/WkHtmlToXSharp/issues/8.

Проблема с IIS заключается в том, что он перерабатывает app. пулы время от времени, но во время этого процесса любые неуправляемые ресурсы, удерживаемые вашим приложением, могут (как в этом случае) не освобождаться должным образом. Кроме того, наличие более одного AppDomain в вашем приложении IIS может привести к повреждению памяти, поскольку оба AppDomains пытаются создать экземпляр WebKit в одном и том же процессе (т. е. в одной и той же памяти/пространстве процесса), и это еще один вариант.

Лучшее, что вы можете сделать, это иметь демона или службу, обрабатывающую преобразование HTML2PDF, и вызывать ее из вашего веб-приложения. с помощью удаленного взаимодействия, вызовов WS или любого другого метода RPC. Это также поможет вам декомпозировать ваше приложение и упростить отладку.

Надеюсь, поможет.

person user2735450    schedule 31.08.2013