MVC Rotativa PDF IIS Server Error

Once you try to work to generate the PDF using Rotativa, you may face the error that I faced. It ruined my whole day. I hope somehow you people save time.

The error which you may see.

Unhandled Execution Error  
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:  
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]  
   Rotativa.WkhtmltopdfDriver.Convert(String wkhtmltopdfPath, String switches, String html) +1364  
   Rotativa.WkhtmltopdfDriver.ConvertHtml(String wkhtmltopdfPath, String switches, String html) +70  
   Rotativa.ViewAsPdf.CallTheDriver(ControllerContext context) +1986  
   Rotativa.AsPdfResultBase.BuildPdf(ControllerContext context) +380  
   Rotativa.AsPdfResultBase.ExecuteResult(ControllerContext context) +69  
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +109  
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +890  
   System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +97  
   System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +241  
   System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29  
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +111  
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53  
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +19  
   System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +51  
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +111  
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +606  
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +288  

While generating the pdf you may see this error. There are some basic steps you have to follow to remove this error.

Step 1. Try to install "Visual C++ Redistributable Packages" You may find those packages in the Microsoft site, very easily.

Note. If your production server won't allow you to install this package then find (MSVCP120.dll)

Step 2. Once you have used the Rotativa pdf form Nuget packaged manager you must have got some executable inside it. as shown in the below image

Rotativa

Step 3. If you try to use this application to execute itself and test the error you are facing while creating the pdf, try this way, the actual error you will get.

c:\inetpub\wwwroot\DummyProject\Rotativa\wkhtmltopdf.exe d:\Pdf\Dummy.html d:\Pdf\Dummy.pdf

After executing this line of code either you will get a fresh pdf file or MSVCP120.dll missing error.

Step 4. This is the final stage you have to only place that dll inside the Rotativa folder which you are hosted in the IIS. If you are enable to execute the Visual C++ Redistributable Packages in the production server, no need to worry, Only just place "MSVCP120.dll" inside the Rotative folder. This will work fine.

Summary

This article explains a common bug, when we try to upload our website to the production server and we have used the Rotativa dll, this error might occur. On this issue, this method works.


Similar Articles