【问题标题】:Rotativa - ViewAspdf does not work on serverRotativa - ViewAspdf 在服务器上不起作用
【发布时间】:2016-05-02 19:29:16
【问题描述】:

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

我有这个动作:

   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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我在 "C:\Windows\System32" (Windows 7, x64) 中找到了丢失的 dll
    • 这对我也有用。我将这两个 DLL 添加到 Rotatoria 文件夹中,服务器上没有问题。 msvcp120.dll 和 msvcr120.dll
    • 链接随着时间的推移而萎缩。请包含链接中的摘要文本/代码,以确保此答案随着时间的推移保持相关/准确。
    【解决方案2】:

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

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

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

    【讨论】:

    • 这个不值得一票否决:我需要将它与 Lucian 的答案结合起来才能让它发挥作用。
    【解决方案3】:

    我遇到了同样的问题: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

    确保所有文件都已添加到项目和源代码管理中,在本地进行了测试,并签入了在 dev 上的构建。

    【讨论】:

    【解决方案4】:

    解决问题:

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

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

    3. 安装文件。

    这样会添加上面提到的缺失的dll文件,现在问题解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2012-09-03
      • 2014-12-23
      • 2015-11-24
      相关资源
      最近更新 更多