当尝试在ASP.NET MVC应用程序中使用Rotativa生成一些PDF时,出现以下异常(没有实际消息,只有堆栈跟踪)。
System.Exception,位于Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath,字符串开关,字符串html)位于 Rotativa.WkhtmltopdfDriver.ConvertHtml(String wkhtmltopdfPath,String 开关,字符串html)在 Rotativa.ViewAsPdf.CallTheDriver(ControllerContext上下文)位于 Rotativa.AsPdfResultBase.BuildPdf(ControllerContext上下文)位于 Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext上下文)
在 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext,ActionResult actionResult)位于 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList
1 过滤器,Int32 filterIndex,ResultExecutingContext preContext, ControllerContext controllerContext,ActionResult actionResult)位于 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) at System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList
1个过滤器,ActionResult actionResult)位于 System.Web.Mvc.Async.AsyncControllerActionInvoker。<> c__DisplayClass21。<> c__DisplayClass2b.b__1c() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker。<> c__DisplayClass21.b__1e(IAsyncResult asyncResult) System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End() 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) System.Web.Mvc.Controller.b__1d(IAsyncResult asyncResult,ExecuteCoreState innerState)位于 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End() 在System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) 在System.Web.Mvc.Controller.b__15(IAsyncResult asyncResult,控制器控制器)在 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End() 在System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult)
在 System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) System.Web.Mvc.MvcHandler.b__5(IAsyncResult asyncResult,ProcessRequestState innerState)位于 System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncVoid1.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase
1.End() 在System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult 结果) System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep步骤)
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤, 布尔值和同步完成)
此问题与缺少Visual Studio 2013的C ++可再发行组件包(MSVCP120.dll)无关,因为它们已安装在计算机上。 实际上,可以通过该应用程序生成一些PDF,这使我认为视图中有些东西有时会导致Wkhtmltopdf停止工作...
关于导致此异常的原因或如何调试的任何想法?
(Rotativa版本是1.6.4,我正在使用MVC5)
答案 0 :(得分:0)
经过多次试验和错误,我找到了解决方案。这个question也为我指明了正确的方向。 wkhtmltopdf分页算法以及大型表或HTML块显然是一个问题。因此,为了解决我的问题,我将HTML更改为较小的块,现在可以使用了。