System.Security.SecurityException: 请求失败异常

System.Security.SecurityException: Request failed exeception

我正在尝试使用 NReco.PdfGenerator 从 HTML 数据生成 PDF。

public static MemoryStream HtmlToPDFConvert(string html)
{
    HtmlToPdfConverter pdfConverter = new HtmlToPdfConverter();
    pdfConverter.Size = NReco.PdfGenerator.PageSize.A4;
    var pdfBytes = pdfConverter.GeneratePdf(html);
    var ms = new MemoryStream(pdfBytes);
    return ms;
}

代码在我的本地机器上运行良好,但是当 运行 服务器(plesk 共享主机)上的代码时我遇到以下错误。

System.Security.SecurityException: Request failed.     at MyClass.MyMethod(string arguments)     at b_Submit_Click(Object sender, EventArgs e)  The action that failed was:  LinkDemand  The type of the first permission that failed was:  System.Security.PermissionSet  The Zone of the assembly that failed was:  MyComputer

看起来错误是因为 NReco 正在尝试为 wkhtmltopdf 生成 exe 文件,但服务器不允许生成该 exe 文件。

有什么办法可以解决吗?提前致谢。

您不能在共享主机上使用 NReco.PdfGenerator,因为当您调用 GeneratePdf 方法时,包装器会执行 wkhtmltopdf.exe 和 System.Diagnostics.Process API。在大多数共享主机上,禁止使用此 API 并且无法从 ASP.NET app.

启动另一个进程

NReco.PdfGenerator's FAQ(“技术限制”)中提到了此限制。

NReco 试图为 wkhtmltopdf 生成 exe 文件,但服务器不允许生成该 exe 文件。所以,我现在使用 iText 库来生成 PDF,它不需要生成任何 exe。

感谢您的帮助。