asp.net - 在 asp.net mvc 中使用 wkhtmltopdf 需要很长时间才能启动

标签 asp.net asp.net-mvc process wkhtmltopdf

我正在使用 wkhtmltopdf 下载页面并创建 pdf,如 here 中所述。一切都按预期工作,但是当它到达以下行时:

int read = proc.StandardOutput.BaseStream.Read(buffer, 0, buffer.Length);

需要很长时间才能继续。 我还尝试过以下方法:

proc.Start();
string output = proc.StandardOutput.ReadToEnd();
string error = proc.StandardError.ReadToEnd();
proc.WaitForExit();

但同样的事情发生在第 2 行 (proc.StandardOutput.ReadToEnd())。

我该如何调试这个?

注意:当我调试整个项目时,我发现 wkhtmltopdf 进程调用的页面仅在延迟后被调用。因此,延迟发生在操作系统调用和页面下载本身之间。

<小时/>

编辑

所以我将参数部分更改为简单的 http://google.com - 并且它执行得非常快。

所以问题出在我的完整论点中的某个地方: --stop-slow-scripts --redirect-delay 1500 --cookie MOODLEID_ %25E2%25C8%2513E%25BD --cookie ASP.NET_SessionId mg3mfaisk45zn5y1aql0glbb -- cookie .ASPXAUTH FEA3D10032E211EDB330E967D8F19A324A912AD792219CA281451AA809F1B580B25466DAF81DE30DF07252FF13F0888C88ED4DB5871579F1DA3EBAA447CBF8601 31F6FF00A763C9207CE13BCB143301E49A2B00EEBBF1F4AE14F109DF1BE8D3B39C43478B99E4C686C3849D1D51DDBFA3D2E871691BAB8346FE5195D867F88F662F72E40 http://localhost:8404/Relatorio/GeralEstaticoPDF?id=15&pesq_cod=0&IncluirParciais=True&NomesImagens[0]=3fd5b6a2-76a4-470b-af99-93500cc90431.png&NomesImagens[1]=c1c86234-c338-4285-9d25- 5069be36a213.png&NomesImagens[2]=4562f9a3-72aa-452c-9736-6d0ba65f59ce.png&NomesImagens[3]=dbc54344-6248-4ee3-9e43-9cb3ef89cc67.png&NomesImagens[4]=8c954917-d5 72-4d4a-b6fd-2b9cd09e8f8e.png -

我需要 cookie 来保留 session 。

如果我直接在命令行上运行它(但输入文件名而不是 -),它也会运行得很快。

<小时/>

编辑2

所以问题肯定是cookie,如果我删除它们,它执行得很快,但它只给我pdf上的登录屏幕,因为它不保留 session 。

最佳答案

PhilJ 的答案是正确的,但是,我想为任何 future 的访问者添加一个可能的解决方案。

简而言之:

[SessionState(System.Web.SessionState.SessionStateBehavior.ReadOnly)] 属性添加到 Controller (进行打印)为我解决了这个问题。

我实际上使用的是 Rotativa 库,该库又使用 wkhtmltopdf。

(添加 Rotativa 标签来提问可能会有所帮助?)

关于asp.net - 在 asp.net mvc 中使用 wkhtmltopdf 需要很长时间才能启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713316/

相关文章:

javascript - 如何通过 html 中的单选按钮将简单的 int 变量存储在服务器上?

asp.net - 在 Web 服务器场上捆绑缓存清除器

有人可以解释一下 C 中 signal() 语法的含义吗?

java - 如何允许从 shutdownHook 登录任何类

java - java中上下文切换具体案例

c# - 如何将数据集中的值添加到列表中?

asp.net - 更改样式表中弹出框的位置?

asp.net-mvc - Signalr 从集线器外部调用特定客户端

jquery - 需要有日期掩码,具体取决于 jquery 中的文化

c# - 我是否需要安装 microsoft sql server 或者它默认随 visual studio community 2017 一起提供?