Среда выполнения Visual C++ 2013 в Service Fabric

Я использую ВтПечкин в одном из сервисов Service Fabric для генерации PDF-файлов из HTML. Это нормально работает на моем локальном компьютере разработки, но как только я разверну свое приложение в кластере Azure и запуском того же кода, я получу следующее сообщение об ошибке:

Unable to load DLL 'wkhtmltox.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)

Я думаю, что это может быть потому, что ВичПечкин использует среду выполнения Visual C++ 2013. Поддерживается ли это в кластере Azure? Или что-то еще не так?

Мой код для создания PDF выглядит следующим образом:

private static readonly IConverter _converter = new ThreadSafeConverter(
                                                        new PdfToolset(
                                                            new Win64EmbeddedDeployment(
                                                                new AssemblyFolderDeployment())));        

    public Task<byte[]> GeneratePdfFromHtml(string title, string html)
    {            
        try
        {
            var document = new HtmlToPdfDocument
            {
                GlobalSettings = {
                ProduceOutline = true,
                DocumentTitle = title,
                PaperSize = PaperKind.A4, // Implicit conversion to PechkinPaperSize
                Margins = {
                        All = 1.375,
                        Unit = Unit.Centimeters
                    }
                },
                Objects =  {
                new ObjectSettings { HtmlText = html }
                }
            };

            byte[] result = _converter.Convert(document);
            return Task.FromResult(result);
        }
        catch(Exception e)
        {
            throw e;
        }                
    }

AssemblyFolderDeployment.cs

public class AssemblyFolderDeployment : IDeployment
    {
        public string Path
        {
            get
            {
                return System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "Wkhtml");
            }
        }
    }

0 ответов

Другие вопросы по тегам