【发布时间】: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吗?