我使用Rotativa的ActionAsPdf方法将HTML文件转换为PDF。(Nuget Rotativa 1.7.3)
[ValidateInput(false)]
public ActionResult PrintReport(string EvalId, string ApplicationID, bool SsOnly, bool Pdf, string ApplicantName)
{
try
{
string FileName = ApplicantName.Trim().Replace(" ", "_") + "_results.pdf";
return new ActionAsPdf("Report", new { EvalId, ApplicationID, SsOnly, PDF = true }) { FileName = FileName };
}
catch (Exception ex)
{
Errors.ErrorOccured(ex);
}
return RedirectToAction("Index", "Error", new { Area = "" });
}
到目前为止,这是非常有效的。我们正在用更新的服务器替换web服务器。
在我们将它转移到新服务器之前,这一切都很好。起初,我认为它不起作用,因为通过移动文件,站点已经转移到了新服务器上。因此,我对新服务器进行了发布,但仍然存在相同的错误。
下面是堆栈跟踪显示的内容
[Exception]
Rotativa.WkhtmlDriver.Convert(String wkhtmlPath, String switches, String html, String wkhtmlExe) +1037
Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches) +72
Rotativa.AsPdfResultBase.WkhtmlConvert(String switches) +80
Rotativa.AsResultBase.CallTheDriver(ControllerContext context) +100
Rotativa.AsResultBase.BuildFile(ControllerContext context) +306
Rotativa.AsResultBase.ExecuteResult(ControllerContext context) +67
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +88
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +775
System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +81
System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__1(IAsyncResult asyncResult) +188
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38
System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +26
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +52
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +39
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38
System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +40
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +73
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +602
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +195
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +128
我可以看到它是指向罗塔蒂瓦,但不知道问题是什么。有什么想法吗?
发布于 2022-04-20 16:31:58
结果表明,我们需要msvcp140.dll和vcruntime140.dll复制到Windows>SysWOW64中。
https://stackoverflow.com/questions/71931510
复制相似问题