我创建了一个ASP.NET MVC应用程序(.NET Framework4.6.2),并使用HiqPDF (Version10.17.0)从HiqPDF生成PDF。
以下是守则:
public static string ConvertHtmlToPdf(string pdfContentFilePath, string pdfOutputPath)
{
try
{
string fileName = pdfOutputPath + DateTime.Now.ToString("ddMMyyyyHHmmssf") + ".pdf";
string pdfContents = System.IO.File.ReadAllText(pdfContentFilePath);
HtmlToPdf htmlToPdfConverter = new HtmlToPdf();
htmlToPdfConverter.TrimToBrowserWidth = true;
PdfDocument pdfDocumentObject = htmlToPdfConverter.ConvertHtmlToPdfDocument(pdfContents, null);
pdfDocumentObject.WriteToFile(fileName);
return fileName;
}
catch(Exception ex)
{
throw ex;
}
}我正在尝试一个非常基本的HTML (只有一个粗体文本,没有图像,没有其他格式)。
此代码在本地环境中运行良好,并成功地生成PDF。但是,当我在Azure上部署这个项目时,我会得到以下错误:
“导航超时”
我尝试了"HtmlToPdf“类的各种其他方法,但是得到了相同的错误。
有谁能告诉我原因是什么,以及如何解决这个问题?
在这方面的任何帮助将是非常感谢的。
发布于 2019-02-13 13:42:55
大多数HTML库在Azure Web应用程序Sandbox中被阻塞。
所有Azure (以及Mobile /Services、WebJobs和函数)都在一个称为沙箱的安全环境中运行。每个应用程序都运行在自己的沙箱内,将其执行与同一台机器上的其他实例隔离开来,并提供了额外的安全和隐私,而这些安全和隐私本来是无法获得的。沙箱机制的目的是确保在一台机器上运行的每个应用程序都有最低的服务保证水平;此外,沙箱执行的运行时限制保护应用程序不受可能运行在同一台机器上的其他资源密集型应用程序的不利影响。
..。
有多个库用于将HTML转换为PDF。许多Windows/.NET特定版本都利用IE,因此广泛使用User32 32/GDI32 32。这些API在沙箱中大部分被阻塞(不管计划如何),因此这些框架在沙箱中不起作用。
有些框架没有广泛地利用User32 32/GDI32 32(例如wkhtmltopdf),我们正在Basic+中用启用Reporting的方式启用这些框架。
https://stackoverflow.com/questions/54671478
复制相似问题