我在我的 ASP.net MVC 项目中使用Rotativa 。我使用 ViewAsPDF 作为返回类型。问题是在本地环境中一切运行顺利,css 样式正确应用于 PDF,但是当我在 prod 服务器上部署我的应用程序并尝试获取 PDF 文件时,服务器仅在不应用 CSS 样式的情况下在 5 分钟后返回它. 如果我将风格直接赋予属性<td style="...">
,它会起作用。我在哪里可以找到问题,以及如何解决?
谢谢!
更新: 如果我删除指向 CSS 样式表的链接,它的工作速度会更快:
更新: 如果我在我的任何网站页面上手动运行 wkhtmltopdf.exe,我会得到:
%computername% | D:\Projects\myapp\trunk\WebSite\Rotativa>wkhtmltopdf http://myappp.com pdf.pfd
Loading pages (1/6)
Error: Failed loading page http://finishgenius.tizbi.com (sometimes it will work just to ignore this error with --load-error-handling ignore)
更新: 如果我将 ViewAsPdf 方法更改为 ActionAsPDF 我收到错误:
Server Error in '/' Application.
Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Exception: Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
Stack Trace:
[Exception: Error: Failed loading page http://myapp.com/FinishingSchedules/PrintScheduleDetails/2?Name=Schedule No.2&CostPerSquareFootMaterial=0.06&CostPerSquareFootLabor=54&DirectCostOfMaterialsAndLabor=108.12&TotalPriceWithMarkUp=118.93&TotalJobSize=2&ProductionTime=36&MaterialsQuantities=System.Collections.Generic.List`1[WebSite.ViewModels.FinishingSchedules.MaterialsQuantities] (sometimes it will work just to ignore this error with --load-error-handling ignore)
]
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches, String html) +570
Rotativa.AsPdfResultBase.CallTheDriver(ControllerContext context) +26
Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +128
Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +19
System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +56
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +52
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +173
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +28
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +29
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +54
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +31
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9633216
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18067