Ошибка WkHtmlToXSharp в среде Windows Server 2008 R2 x64 - PullRequest
1 голос
/ 28 июня 2011

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 или что-то в этом роде.

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

1 Ответ

0 голосов
/ 31 августа 2013

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

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

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

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

...