Rotativa - ViewAspdf 在服务器上不工作

Rotativa - ViewAspdf does not work on server

我知道这个主题已经在多篇文章中讨论过,但是 none 的解决方案对我有帮助。

我有这个动作:

   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 格式的视图,并且在我的计算机上一切正常。

在服务器上部署项目后,此操作不起作用,返回错误:

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.

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

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

我找到了一个非常简单的教程来解决我的 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.

对我有用的是,我在 Rotativa 文件夹中丢失了文件,

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

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

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

对我有用的是 Lucian Bumb 和 Ray Levron 的答案的组合。

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

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

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

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

  • msvcp120.dll
  • msvcp140.dll
  • msvcr120.dll
  • vcruntime140.dll

确保所有文件都添加到项目和源代码管理中,在本地进行测试,并签入开发版本。

解决问题:

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

  2. 的可再发行软件包
  3. 单击下载并选择文件 (vcredist_x86.exe),即使您是 运行 X64 位服务器版本。

  4. 安装文件。

这样就可以添加上面提到的缺失的dll文件,问题解决