2017-11-29 4 views
0

NReco.PdfGenerator.HtmltoPdfConverterを使用し、最近ベアラトークンでOAuthを実装しました。 ApiControllersを実装して保護した後、コンバータは次のエラーをスローし始めました。NReco CustomWkHtmlArgsベアラトークン

WkHtmlToPdfException:によりネットワークエラーに対するコード1で終了:AuthenticationRequiredError(終了コード:1)

一部スヌーピングした後、私はカスタムヘッダパラメータを追加することが発見されたので、私はトークンベアラをつかんで、それを添付CustomWkHtmlArgs

これは私が遠くに持っているものです。

 htmlToPdf.CustomWkHtmlArgs = "-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000"; 

     FileHandlingModule.deleteFile(savePath); 

     //Get Auth Token 
     var accessToken = "Bearer " + Request.Headers.Authorization.Parameter; 

     htmlToPdf.CustomWkHtmlArgs += " --custom-header Authorization: " + accessToken; 
     htmlToPdf.GeneratePdfFromFile(purl, null, savePath); 

これは、これは引数文字列がどのように見えるか何であるかCustomWkHtmlArgsです。

-L 0ミリメートル-R 0ミリメートル-T 5ミリメートル-B 0ミリメートル--javascript遅延3000 --customヘッダ許可:ベアラ YHE7HJEh_Hk0wazErUK6DIGcCG7-GRDHBEWRA-ju9hewqPk9cjY3zH5MT ....

トークンがありました簡潔さのために短縮された。私はコロンを削除しようとしましたが、私はまだAuthRequiredErrorを取得します。ヘッダー認証トークンを渡すことに慣れている人はいますか?

答えて

0

まず引用符でヘッダー値を渡すためにしてみてください。

htmlToPdf.CustomWkHtmlArgs += " --custom-header \"Authorization\" \"" + accessToken + "\""; 

このヘッダーはページのリソースにアクセスするために必要な場合(画像、CSS、AJAX呼び出し)オプション「--customヘッダ伝播」必要があります指定することもできます。

ところで、コマンドラインからwkhtmltopdfを使ってカスタムヘッダーをテストしようとしましたか?また、htmlToPdf.LogReceivedイベントを処理し、wkhtmltopdfコンソールログ出力を取得することができます。これはデバッグの目的には便利です。

+0

コマンドラインについてのヒントをありがとう。それはトラブルシューティングプロセスを迅速化しました。 2つの注意点があります。 httpヘッダーパラメータ全体ではなく、トークンを引用符で囲みます。 'htmlToPdf.CustomWkHtmlArgs + = " - custom-header Authorization \" "+ accessToken +" \ ""' ページにセキュリティで保護された追加のAJAX呼び出しが含まれている場合は、スイッチ_-- custom-header-propagation_も追加する必要があります。これはwkhtmltopdfに、各後続の呼び出しにヘッダーオブジェクトを追加するよう指示します。 –

+0

@JeremyBondあなたのコメントで回答を更新しました。 –

関連する問題