502 错误:使用 IronPDF 的 Azure 应用服务上的网关错误

Posted

技术标签:

【中文标题】502 错误:使用 IronPDF 的 Azure 应用服务上的网关错误【英文标题】:502 Error: Bad Gateway on Azure App Service with IronPDF 【发布时间】:2022-01-17 08:13:15 【问题描述】:

我正在尝试让 IronPDF 处理我的 ASP.NET Core 3.1 应用服务部署。 我没有将 Azure Functions 用于任何这些,只是 Azure 应用服务上的常规端点——当用户调用它时,服务会生成并返回生成的 PDF 文档。

在 localhost 上运行端点时,它可以完美地工作——从传递给方法的 html 生成报告。但是,一旦我将它部署到我的 Azure Web 应用服务,我就会收到 502 - Bad Gateway 错误,如附件所示(为简洁起见,在 Swagger 中显示)。

控制器:

[HttpPost]
[Route("[action]")]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<IActionResult> AgencyDownload([FromBody] AgencyReportSubmissionDto filters)

  var user = await _userService.GetUserByIdAsync(HttpContext.User.GetUserId());

  // Generate the PDF
  var content = await _agencyReport.Generate(user, null, filters.FilterDate, filters.Content, filters.Type);

  // Return the PDF to the browser
  return new FileContentResult(content.BinaryData, "application/pdf")  FileDownloadName = "report.pdf" ;

服务:

public async Task<PdfDocument> Generate(User user, byte[] letterhead, DateTimeOffset filterDate, string html, AgencyReportTypes reportType)

   var corporateIdentity = new CorporateIdentity()
   
        PrimaryColor = "#000000",
        PrimaryTextColor = "#ffffff",
        SecondaryColor = "#ffffff"
   ;

    // Inserts the HTML content (from form) into the HTML template
    var htmlContent = Template(corporateIdentity.PrimaryColor, corporateIdentity.PrimaryTextColor).Replace("HtmlContent", html);
        
    TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("South Africa Standard Time");
    var convertedDate = TimeZoneInfo.ConvertTimeFromUtc(filterDate.UtcDateTime, tz);
    var Renderer = new ChromePdfRenderer();

    Renderer.RenderingOptions.Title = "Agency Report - for " + convertedDate.ToString("d MMMM yyyy");
    Renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

    var doc = await Renderer.RenderHtmlAsPdfAsync(htmlContent);
    return doc;

【问题讨论】:

【参考方案1】:

我还使用 Azure App Service 作为 API,包装 IronPDF。升级到最新的 Iron PDF 包也破坏了我的应用程序,返回 502。

我修复它的方法是使用 ZipDeploy 部署代码,然后将 WEBSITE_RUN_FROM_PACKAGE 设置为 0。这也是使 Iron PDF 日志文件显示在 Azure 中所必需的,正如他们在此处推荐的那样:https://iron.helpscoutdocs.com/article/122-azure-log-files。

【讨论】:

建议在 IronPDF 主网站上禁用“从包文件运行”选项:ironpdf.com/docs/questions/azure/#the-golden-rule【参考方案2】:

应用服务在沙盒中运行您的应用,大多数 PDF 库都会失败。查看IronPDF documentation,他们说您可以在VM 或容器中运行它。由于您已经在使用 App Service,只需将您的应用打包到容器中,将其发布到容器注册表并配置 App Service 以运行它。

【讨论】:

感谢您的反馈,我需要做一些研究才能完成所有这些工作,但我会试一试并回复您。 我建议在此处使用 Debian 10 Docker 映像作为大纲:ironpdf.com/docs/questions/docker-linux

以上是关于502 错误:使用 IronPDF 的 Azure 应用服务上的网关错误的主要内容,如果未能解决你的问题,请参考以下文章

无法解决 Azure 应用服务中的 (502) 错误网关错误

从托管在 Azure 中的 Asp.net Core MVC Web App 获取“响应状态代码不表示成功:502(错误网关)”

当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?

Azure 函数应用返回 502 Bad Gateway

Azure 上的 Google Analytics API

Azure Java 函数 -502-Bad Gateway