使用来自罗塔蒂瓦1.6.4的NuGet,并注意到以下使用下面代码的问题。
ActionAsPdf随机挂起不确定的时间。
下面的代码正在悬挂:
var pdfResult = new ActionAsPdf("Report", new {id = Request.Params["id"]})
{
Cookies = cookieCollection,
FormsAuthenticationCookieName = FormsAuthentication.FormsCookieName,
CustomSwitches = "--load-error-handling ignore"
};可能有用的背景信息:
customSwitches用于忽略一个使用ActionAsPdf调用wkhtmltopdf.exe的记录在案的问题,但它并不仅在wkhtmltopdf调用中抑制代码中的错误。
观察、使用和测试:
它可以工作,但在运行应用程序(无论是否逐步执行代码)时,从点击pdfResult =新的ActionAsPdf到最终进入调用的"Report“操作之间的时间可以从10秒到大约4分钟不等。无法识别Visual的“输出”窗口中实际发生的任何事情,因此不会抛出我找到的任何错误。只是随机缓慢地过渡到Reports()操作。
我可以通过URL直接运行Reports()操作,它从不像这样慢下来,对于PDF生成来说非常快。我正在运行它,使用ActionAsPdf获取二进制文件,保存到文件系统,并通过电子邮件发送,这是为这个库规定的方法。
这种行为既存在于本地Windows 10开发框中,也存在于远程服务器2008R2测试框中。.Net 4.5.1在两个框上,每个框上都默认IIS。
我有问题:
知道是什么原因导致了这种减速,以及如何补救它吗?
发布于 2015-10-12 21:26:02
最后,我使用了UrlAsPdf()而不是ActionAsPdf(),它可以工作。看来ActionAsPdf()可能有一些问题,我在GitHub上向旋转项目提交了一个bug。ActionAsPdf()仍然被标记为beta,因此希望它在将来的版本或社区中得到修正。
发布于 2020-11-08 18:34:17
在我的例子中,随着使用UrlAsPdf(),我不得不做更多的调整。我已经将问题缩小到了我正在添加的cookie集合。所以我试着添加我需要的曲奇,这个问题就解决了。下面是我使用的示例代码。
var report = new UrlAsPdf(url);
Dictionary<string, string> cookieCollection = new Dictionary<string, string>();
foreach (var key in Request.Cookies.AllKeys)
{
if (Crypto.Hash("_user").Equals(key))
{
cookieCollection.Add(key, Request.Cookies.Get(key).Value);
break;
}
}
report.Cookies = cookieCollection;
report.FormsAuthenticationCookieName = FormsAuthentication.FormsCookieName;https://stackoverflow.com/questions/32854225
复制相似问题