我正在使用 HiQPdf 插件在 ASP.NET MVC 应用程序上将页面(客户发票)转换为 pdf。它在本地主机上运行良好,但在我将其发布到 Godaddy 共享托管服务器后抛出错误。这是它抛出的错误:
错误 0x4EC。检查在 HiQPdf.dll 程序集附近是否可以找到“G:**\domain.com\Content\HiQPdf.dep”资源文件,并且用户对该文件具有读取和执行权限。如果您将 HiQPdf.dep 放在不同的位置,请调用 SetDepFilePath() 方法
我从昨天开始就一直在搜索,但没有结果,我已经确认 Content 文件夹中存在 HiQPdf.dep,这些是我尝试过的方法,并且都在本地工作,但没有解决 GoDaddy 上的问题:
将 HiQPdf.dep 复制到 Content 文件夹并使用 SetDepFilePath() 方法引用它。
//初始化模型 var model = _db.Invoice.Where(x => x.InvoiceId == 发票Id && !x.Draft) .ToArray().Select(x => new InvoiceVM(x)).FirstOrDefault();
// convert a page to string (update the path to the right page)
string html = RenderViewToString(ControllerContext, "~/views/home/_InvoiceDoc.cshtml", model);
// start creating pdf doc
// the base URL to resolve relative images and css
string thisPageUrl = this.ControllerContext.HttpContext.Request.Url.AbsoluteUri;
string baseUrl = thisPageUrl.Substring(0, thisPageUrl.Length -"Home/ConvertThisPageToPdf".Length);
// instantiate the HiQPdf HTML to PDF converter
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
htmlToPdfConverter.SetDepFilePath(Server.MapPath("~/Content/HiQPdf.dep"));
// render the HTML code as PDF in memory
byte[] pdfBuffer = htmlToPdfConverter.ConvertHtmlToMemory(html, baseUrl);
// send the PDF file to browser
FileResult fileResult = new FileContentResult(pdfBuffer, "application/pdf");
fileResult.FileDownloadName = "Invoice-" + model.InvoiceNumber + ".pdf";
return fileResult;
我将 GoDaddy 上的 HiQPdf.dep 文件和 Content 文件夹的权限更改为完全控制,也不起作用。
我已在 web.config 中将信任级别设置为“完全”,仍然可以解决问题。
我有同样的问题。我通过将文件 HiQPdf.dep 文件复制到“bin”文件夹中来修复它。