Rotativa PDF generation working locally but not on IIS 7

28,656

Solution 1

This error is a missing C++ redistributable Package for Visual Studio 2013 file called (MSVCP120.dll).

To solve the issue:

  1. Open the C++ redistributable Package for Visual Studio 2013 downloadable link below: download Visual C++ Redistributable Packages for Visual Studio 2013

  2. Click Download and choose the file (vcredist_x86.exe) even if you are running X64 bit server version.

  3. Install the file.

Check Jalal W Hijazi Blog http://jwhijazi.blogspot.com/2015/05/solving-rotativa-unhandled-exception.html for more details.

Solution 2

The accepted answer almost worked for me. I was missing a newer version of the C++ redistributable so installing the old version didn't help.

The easiest way to find out what you are missing is to run wkhtmltopdf.exe manually. It will either give you console output (if working) or a message box about what's missing.

I was missing MSVCP140.dll, which is from the VS 2015 redist, available here: https://www.microsoft.com/en-gb/download/details.aspx?id=48145

Solution 3

I fixed my issue by updating the wkhtmltopdf files from the installer found here

enter image description here

Working flawlessly now!

Solution 4

When I upgraded from Rotativa 1.6.4 to 1.7.3 my PDF conversion on my website app stopped working and after running the wkhtmltopdf.exe on my production server I noticed it was having an issue with msvcp140.dll

Solution was to install Visual C++ Redistributable for Visual Studio 2015 https://www.microsoft.com/en-us/download/details.aspx?id=48145

Solution 5

I installed Visual C ++ Redistributable Packages for Visual Studio 2015

https://www.microsoft.com/pt-br/download/details.aspx?id=48145

This solved for me.

Share:
28,656
Robin
Author by

Robin

Updated on September 28, 2020

Comments

  • Robin
    Robin over 3 years

    I have an ASP.NET MVC 5 application. It has a simple form and when the user submits it, the form is stored in the cache and then another controller action is called, this action will return the model as a view as a PDF.

    I have no need to save it locally, just to show it in the browser so that the user can download it.

    There is no need for a database either, that is why I store the model in the cache.

    Locally, on Visual studio 2013, it works fine. But when I publish it to IIS 7 I get an Unhandled Execution Error. Here is the stack trace that I get back:

     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 
    

    I first used ActionAsPDF() but now I also tried to use return new ViewAsPDF(). Both give the same error and stack trace. Does this have to do something with permissions?

  • jamdownian
    jamdownian almost 9 years
    Oh..and this running on a azure hosted machine.. Sever 2012 VM not locally on my laptop
  • HugoXP
    HugoXP about 8 years
    Tip (on the Jalal blog) that worked for me: "I just copied msvcp120.dll and msvcr120.dll to the folder containing wkhtmltopdf.exe and all worked fine"
  • fubo
    fubo about 7 years
    @HugoXP you should write this as a seperate answer - awesome!
  • JoeyZero
    JoeyZero over 6 years
    Current Rotativa requires Visual C++ for Visual Studio 2015
  • Rosdi Kasim
    Rosdi Kasim almost 6 years
    The same thing happened to me after upgrading to 1.7.3. Installing the x86 vs 2015 redistributable fixed it.
  • Rosdi Kasim
    Rosdi Kasim over 5 years
    C++ Redistributable 2013 no longer works, I had to install Microsoft Visual C++ Redistributable for Visual Studio 2017 (support.microsoft.com/en-my/help/2977003/…) for it to work.
  • Mark Embling
    Mark Embling almost 5 years
    In case anyone else runs into this issue, at this point (June 2019), I also needed to install this and discovered that you must install the x86 version. Installing just the x64 version does not work.