使用NReco.PdfGenerator.HtmltoPdfConverter,最近使用Bearer令牌实施了OAuth。在实现并保护我的ApiControllers之后,转换器开始抛出以下错误。
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 这就是args字符串的样子。
-L 0mm -R 0mm -T 5mm -B 0mm --javascript-delay 3000 --custom-header授权:持票人 YHE7HJEh_Hk0wazErUK6DIGcCG7-GRDHBEWRA-ju9hewqPk9cjY3zH5MT ....
为简洁起见,缩短了令牌。我尝试删除冒号,但仍然得到AuthRequiredError。是否有人熟悉传递头部认证令牌?
答案 0 :(得分:0)
首先尝试在引号中传递标题值:
htmlToPdf.CustomWkHtmlArgs += " --custom-header \"Authorization\" \"" + accessToken + "\"";
如果需要此标头来访问页面资源(图像,css,ajax调用),则还应指定“--custom-header-propagation”。
顺便说一下,您是否尝试过从命令行使用wkhtmltopdf测试自定义标头?此外,您可以处理htmlToPdf.LogReceived
事件并获取wkhtmltopdf控制台日志输出 - 它可能对调试有用。