【问题标题】:Rotativa not working when impersonate enabled on server在服务器上启用模拟时 Rotativa 不工作
【发布时间】:2019-01-17 19:39:02
【问题描述】:

我正在使用 Rotativa 从视图中生成 PDF。它适用于我的本地主机,但是当我推送到我的服务器时它根本不起作用。服务器启用了我需要为此站点启用的 Windows 身份验证和模拟。

这是我尝试在服务器上运行代码时遇到的错误

Qt:无法初始化 OLE(错误 80070005)错误:加载失败 页 https://api.mydomain.com/Reports/RedBluePDF?community=CommunityName&procedure=GetTasks (有时它可以忽略这个错误 --load-error-handling ignore) 由于 http 错误而退出代码 1:1003

这是我的代码:

public byte[] getReportsPDF(string community, string procedure)
        {

            byte[] pdfBytes = new byte[] { };

            RouteData route = new RouteData();
            route.Values.Add("controller", "SiteSuperReports");
            route.Values.Add("action", "RedBluePDF");

            this.ControllerContext = new ControllerContext(new HttpContextWrapper(System.Web.HttpContext.Current), route, this);

            if (procedure == "GetProductionTasks")
            {

                var actionPDF = new Rotativa.ActionAsPdf("RedBluePDF", new { community = community, procedure = procedure })
                {
                    PageSize = Size.A4,
                    PageOrientation = Rotativa.Options.Orientation.Landscape,
                    PageMargins = { Left = 1, Right = 1 }
                };

                try
                {
                    pdfBytes = actionPDF.BuildFile(ControllerContext);
                }
                catch(Exception e)
                {
                    Console.Write(e.Message.ToString());
                }
            }

            return pdfBytes;
        }

这里是 RedBluePDF 方法,它只是返回一个视图:

public ActionResult RedBluePDF(string community, string procedure) {
     return View();
}

我做错了什么,为什么这在我的服务器上不起作用,但在我的本地主机上?以及如何让它在我的服务器上运行。

【问题讨论】:

  • 80070005 被拒绝访问。这个 rotativa 东西似乎在调用时产生了一个 exe(wkhtmltoimage.exe 或 wkhtmltopdf.exe)。尝试将此 .exe 的执行权限授予运行您的代码的服务器用户(或测试它是否更改任何内容的所有人)
  • 你的html上有Javascript吗?

标签: c# asp.net rotativa


【解决方案1】:

尝试以下解决方案之一:

1- 转到 IIS > 站点 > 身份验证,单击“ASP.NET 模拟”并禁用它。

2- 如果您正在调用脚本或文件或其他任何内容,请指定使用的协议:

src="//api.mydomain.com/?????

到:

src="http://api.mydomain.com/?????

3- 在您的应用程序池配置中,在进程模型下,有一个选项“加载用户配置文件”。默认为False,设置为true。

【讨论】:

  • 我需要在我的网站上启用模拟。
  • 我会尝试选项 3
  • @user979331 希望它能解决问题,或者尝试升级您的 Rotativa 版本。
  • 我的版本是 1.7.3
  • 选项 3 不起作用 :( 我得到了同样的错误(是的,我重新启动了应用程序池)
猜你喜欢
  • 2016-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-04
  • 1970-01-01
相关资源
最近更新 更多