Once you try to work to generate the PDF using Rotativa, you may face the error which I faced. It ruined my whole day. I hope somehow you people save time.
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
-
-
- Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34248
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 found those packages in microsoft site, very easily.
Note : If your production server wont allow 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
Step 3: If you try to use this application to execute itself and test the what error you are facing while creating the pdf, try this way, the actual error you will get it.
- 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 fresh pdf file or MSVCP120.dll missing error.
Step 4: This is the final stage you have to only place those dll inside the Rotativa folder which you are hosted in the IIS . If you are enable to execute the Visual C++ Redistributable Packages in production server, no need to worry, Only just placed "MSVCP120.dll" inside the Rotative folder. This will work fine.
Summary
This article explains a common bug, when we try to upload our website in production server and we have used the Rotativa dll, this error might may occur. On this issue this method works.