1

私は現在、Azure サービス ファブリック (Web およびワーカーの役割を置き換える新製品の一種) でホストされる印刷サービスに取り組んでいます。wkhtmltopdf と NReco.PDFGenerator.LT をラッパーとして使用しています。ローカルの開発クラスターでは正常に動作していますが、オンラインの場合は失敗します。

私が得た唯一の例外はException thrown: 'System.Exception' in NReco.PdfGenerator.LT.dll、何が失敗しているのかがわからないため、デバッグが非常に難しいと感じたことです。

これを読んで、クラスターにいくつかのものが欠けているのではないかと考えていますが、ローカル環境はオンライン環境のレプリカであると想定されています.さらに、wkhtmltopdfに切り替える前に、同じクラスターでphantomjsをNRecoラッパーで使用していましたが、オンラインとローカルの両方で動作していて、どちらも同じコア エンジンを使用していると思いますが (フォークは異なります)?

これが私のコードです。リモート デバッグ中に、ライセンス、.exe パス、およびファイルの値が正しいことを確認しました。

[HttpGet]
    public ActionResult Get(string target)
    {
        var wktohtmlPath = Path.Combine(_hostingEnvironment.WebRootPath, "lib");
        var htmlToPdf = new HtmlToPdfConverter() {
            Quiet = false,
            CustomWkHtmlArgs = "--print-media-type",
            PdfToolPath = wktohtmlPath,
            Margins = new PageMargins() { Left = 17, Right = 17, Top = 17, Bottom = 17 }
        };
        htmlToPdf.License.SetLicenseKey(
             _optionsAccessor.Value.LicenceOwner,
             _optionsAccessor.Value.LicenceKey
        );

        try
        {
            var fileBytes = htmlToPdf.GeneratePdfFromFile(target, null);
            var fileStream = new MemoryStream(fileBytes);
            return new FileStreamResult(fileStream, "application/pdf");
        }
        catch
        {
            return BadRequest();
        }
    }

回答ありがとうございます

4

1 に答える 1

1

記録のために:2つの問題がありました

  • オンライン クラスターに C++ ランタイム ライブラリ (msvcp120.dll & msvcr120.dll) がありません (これについては NReco に感謝します)。
  • Service Fabric は x86 バージョンしか実行できないようで、私は x64 バージョンで作業していました。
于 2016-11-25T13:26:09.243 に答える