2015-09-29 159 views
3

使用NuGet的Rotativa 1.6.4,并使用下面的代码注意到以下问题。Rotativa ActionAsPdf()非常慢

ActionAsPdf随机挂起不确定的时间量。

下面的代码是挂:

var pdfResult = new ActionAsPdf("Report", new {id = Request.Params["id"]}) 
    { 
     Cookies = cookieCollection, 
     FormsAuthenticationCookieName = FormsAuthentication.FormsCookieName, 
     CustomSwitches = "--load-error-handling ignore" 
    }; 

背景信息,可以帮助:

的customSwitches在使用中忽略了一个问题,文件调用wkhtmltopdf.exe使用ActionAsPdf,但它确实不要仅在wkhtmltopdf调用中抑制代码中的错误。

观测,使用和测试:

它的工作原理,但运行应用程序时(无论是否通过代码步进),它可以在10秒内的任何地方高达击中pdfResult之间约4分钟=新ActionAsPdf并最终进入被称为“报告”的行动。无法辨别Visual Studio的输出窗口中实际发生的任何事情,我没有发现任何错误。只是随机缓慢转换到Reports()操作。

我可以直接通过URL运行Reports()动作,它不会像这样变慢,而且对于PDF生成来说速度非常快。我正在使用ActionAsPdf运行它,以获取二进制文件保存到文件系统并通过电子邮件发送,这是此库的规定方法。

该行为在本地Windows 10开发盒和远程Server 2008R2测试盒上都存在。 .Net 4.5.1在两个盒子上,每个盒子默认IIS。

问题,我有:

上什么可能下降,以及如何解决它,因为这种缓慢的任何想法?

回答

1

我最终使用UrlAsPdf()而不是ActionAsPdf(),它的工作原理。似乎ActionAsPdf()可能存在一些问题,我已经在GitHub上提交了一个Rotative项目的bug。 ActionAsPdf()仍然被标记为beta,所以希望它在未来的版本或社区中得到修复。

+0

这是否解决了速度问题?我的速度还是很慢的。我的开发机器需要几分钟的时间。 – Jess

+0

UrlAsPdf()在我使用过的本地开发,测试,阶段和产品环境中没有任何缓慢的问题,其中ActionAsPdf()在所有环境中都存在问题,缓慢的下降似乎是随机的,就像我尚未确定任何条件可靠地重复它。 – SouthPlatte

+1

感谢您的回复! :)如果你好奇,我最终会以另一种方式解决它:http://stackoverflow.com/questions/35067191/why-does-rotativa-always-generate-my-login-page-why-is-it-slow – Jess