Rotativa - ViewAspdf在服务器上不起作用

时间:2016-01-26 09:16:35

标签: c# asp.net-mvc pdf-generation rotativa

我知道这个主题已经在几篇文章中进行了讨论,但没有一个解决方案对我有帮助。

我有这个动作:

   public ActionResult DownloadViewPDF(string userId)
        {
            var model = db.MyCvs.FirstOrDefault(u => u.UserId == userId);

            if (model != null)
                return new Rotativa.ViewAsPdf("ViewUserCv", model) { FileName = model.FirstName + model.LastName + "_CV.pdf" };
            return Content("there is no Cv to download");
        }

使用上述操作我将视图下载为pdf,一切都在我的计算机上按预期工作。

在服务器上部署项目后,此操作无效,正在返回错误:

  

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用异常堆栈跟踪来识别异常   下方。

我正在使用Visual Studio Community 2015。 在服务器上,我有Rotativa.dll以及名为Rotativa的根目录中的文件夹,文件名为wkhtmltopdf.exe

我不知道如何处理这个错误,你能给我一些消息吗?

4 个答案:

答案 0 :(得分:6)

我找到了一个非常简单的教程如何解决我对rotativa的问题,对于那些有相同问题的人,请按照本教程进行操作:

Sample process to generate PDF with Rotativa in Asp.Net MVC

基于本教程,我们需要做的就是:

上传dll:

  • msvcp120.dll
  • msvcr120.dll

因为Rotativa需要“Visual C ++ Redistributable for Visual Studio”的组件。

  

C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ Packages \ Debugger \ X64 \ msvcp120.dll

     

C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Common7 \ Packages \ Debugger \ X64 \ msvcr120.dll

 You can refer above path on your local with your own specified path to find it.
 Upload them to "Rotativa" folder.

答案 1 :(得分:3)

对我有用的是,我在Rotativa文件夹中缺少文件,

help-wkhtmltoimage.txt
help-wkhtmltopdf.txt
msvcp120.dll
msvcp140.dll
msvcr120.dll
vcruntime140.dll
wkhtmltoimage.exe
wkhtmltopdf.exe
wkhtmltox.dll

一旦我把这些文件放入,它就像一个魅力

答案 2 :(得分:3)

我遇到了同样的问题:Rotativa在本地工作,但不在我们的开发服务器上工作。

对我来说有用的是Lucian Bumb和Ray Levron的答案。

首先我去了:https://wkhtmltopdf.org/downloads.html并下载了64位版本。

我运行了安装程序,找到了bin文件夹,并将这三个文件复制到我项目的“Rotativa”文件夹中:

  • wkhtmltoimage.exe
  • wkhtmltopdf.exe
  • wkhtmltox.dll

然后我在我的电脑上发现这四个.dll文件并运行搜索,并将它们复制到我项目的“Rotativa”文件夹中:

  • msvcp120.dll
  • msvp140.dll
  • msvcr120.dll
  • vcruntime140.dll

确保所有文件都已添加到项目和源代码控制中,在本地测试,并在dev上签入以构建。

答案 3 :(得分:0)

要解决此问题:

  1. 在下面打开Visual Studio 2013的C ++可再发行组件包可下载链接: https://www.microsoft.com/en-GB/download/details.aspx?id=40784用于Visual Studio 2013的可再发行程序包

  2. 单击“下载”,然后选择文件(vcredist_x86.exe),即使您正在运行X64位服务器版本。

  3. 安装文件。

这将添加上面提到的丢失的dll文件,现在问题已解决。