You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rotativa本地运行正常但部署至Azure Web App后失效问题(2021)

问题核心原因

Rotativa 底层依赖 wkhtmltopdf 二进制可执行文件完成HTML到PDF的渲染,Azure App Service 默认的沙箱环境对GDI接口调用、自定义可执行文件执行有严格限制,是本地运行正常、部署后超时的根本原因。

可行解决方案

  • 升级Azure Web App服务层级:共享层级(F1、D1)完全禁止GDI调用,无法满足wkhtmltopdf的运行要求,至少将服务层级升级到B1及以上的基础专用层级。
  • 调整应用配置:在Azure门户的Web App配置页,新增应用配置项 WEBSITE_LOAD_USER_PROFILE,值设为1,保存后重启应用,解除部分沙箱执行限制。
  • 匹配二进制文件版本:确认项目中引用的wkhtmltopdf版本与App Service运行平台一致。在Azure Web App「常规设置」中确认运行平台为x86/x64,对应放置相同架构的wkhtmltopdf.exe,同时将该文件的「复制到输出目录」属性设置为「如果较新则复制」,确保发布时同步到服务端。
  • 优化代码配置:显式指定Rotativa的二进制文件路径,同时添加沙箱适配参数,示例代码如下:
// 全局初始化时指定wkhtmltopdf所在目录,也可以在调用前执行
Rotativa.Configuration.RotativaConfiguration.Setup(Server.MapPath("~/Rotativa"));

public ActionResult Pdf()
{
     var file = new Rotativa.ViewAsPdf("~/Views/CovidTest/TestViewForPDF.cshtml", null) { 
         FileName = "Test.pdf", 
         PageSize = Rotativa.Options.Size.A4, 
         CustomSwitches = "--disable-smart-shrinking --no-sandbox" 
     };         
     return file;
}
  • 备选方案:如果Windows宿主的App Service仍然无法运行,可以切换到Linux宿主的App Service或者容器实例部署,Linux环境对wkhtmltopdf的运行限制更少,无需处理GDI权限问题。

内容的提问来源于stack exchange,提问作者Guillermo Oramas R.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 10:24:03