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

本文关键字:不起作用 服务器 ViewAspdf Rotativa | 更新日期: 2023-09-27 18:31:57

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

我有这个动作:

   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 的文件。

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

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

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

在 Asp.Net MVC 中使用 Rotativa 生成 PDF 的示例过程

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

上传 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

您可以使用自己指定的路径在本地引用上述路径 找到它。 将它们上传到"Rotativa"文件夹。

对我有用的是,我在 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 可下载C++可再发行组件包链接:https://www.microsoft.com/en-GB/download/details.aspx?id=40784 Visual Studio 2013 的可再发行组件包

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

  3. 安装该文件。

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