Rotativa 在 Azure 中的服务结构节点上崩溃
Rotativa crashes on service fabric node in Azure
我有一个项目需要收集多个数据并将其放入一个 pdf 中,为此我使用了 Rotativa 包装器。它在我的本地服务结构集群上运行良好,我能够使用 ViewAsPdf 生成 pdf,然后获取字节数组以将其附加到电子邮件中。当我在 Azure(服务结构集群)中部署项目并且我收到此错误时,问题就来了:
at Rotativa.AspNetCore.WkhtmlDriver.Convert(String wkhtmlPath, String switches, String html, String wkhtmlExe)\r\n at Rotativa.AspNetCore.WkhtmltopdfDriver.ConvertHtml(String wkhtmltopdfPath, String switches, String html)\r\n at Rotativa.AspNetCore.ViewAsPdf.<CallTheDriver>d__19.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---
我尝试过的事情:
- 在 Service Fabric 节点(部署项目的地方)的 x64 和 x86 版本中为 Visual Studio 2013 和 2015 安装了 Visual C++ Redistributable Packages
- 将 Rotativa 文件夹从 wwwroot 移动到项目的根路径,并在 RotativaConfiguration.Setup() 方法中设置路径
- 已将 msvcp120.dll 和 msvcr120.dll 复制到 Rotativa 文件夹
- 在服务结构节点中安装wkhtmltopdf.exe
- 我安装了Rotativa.AspNetCore 1.0.6 nuget包
- 我使用 ViewAsPdf 渲染剃刀视图,并调用 BuildFile 方法获取字节数组
- 如果我在 service fabric 节点的命令行中 运行 wkhtmltopdf.exe 我得到:"The application was unable to start correctly(0xc000007b) Click ok to close the application"
Service Fabric 节点是 Windows 机器。项目使用aspnet core 2.0构建
任何帮助将不胜感激。谢谢!
作为解决方法,您可以创建一个 container 到 运行 这个。它会为您省去进入节点安装东西的麻烦,这会限制您的横向扩展和故障转移选项。
有some people who got it working.
我假设是缺少依赖项问题。
根据您提供的场景和消息The application was unable to start correctly(0xc000007b)
还有其他相关问题:
The application was unable to start correctly (0xc000007b) and Error : the application was unable to start correctly
另一个问题可能是缺少 运行 或访问特定依赖项的权限。
我建议你试试:
- 运行首先通过命令行以管理员身份运行。
- 检查防火墙或network\website权限
- 使用 dependency walker 并检查它的依赖项 loads\fail 并验证它们是否安装在服务器上。
我有一个项目需要收集多个数据并将其放入一个 pdf 中,为此我使用了 Rotativa 包装器。它在我的本地服务结构集群上运行良好,我能够使用 ViewAsPdf 生成 pdf,然后获取字节数组以将其附加到电子邮件中。当我在 Azure(服务结构集群)中部署项目并且我收到此错误时,问题就来了:
at Rotativa.AspNetCore.WkhtmlDriver.Convert(String wkhtmlPath, String switches, String html, String wkhtmlExe)\r\n at Rotativa.AspNetCore.WkhtmltopdfDriver.ConvertHtml(String wkhtmltopdfPath, String switches, String html)\r\n at Rotativa.AspNetCore.ViewAsPdf.<CallTheDriver>d__19.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---
我尝试过的事情:
- 在 Service Fabric 节点(部署项目的地方)的 x64 和 x86 版本中为 Visual Studio 2013 和 2015 安装了 Visual C++ Redistributable Packages
- 将 Rotativa 文件夹从 wwwroot 移动到项目的根路径,并在 RotativaConfiguration.Setup() 方法中设置路径
- 已将 msvcp120.dll 和 msvcr120.dll 复制到 Rotativa 文件夹
- 在服务结构节点中安装wkhtmltopdf.exe
- 我安装了Rotativa.AspNetCore 1.0.6 nuget包
- 我使用 ViewAsPdf 渲染剃刀视图,并调用 BuildFile 方法获取字节数组
- 如果我在 service fabric 节点的命令行中 运行 wkhtmltopdf.exe 我得到:"The application was unable to start correctly(0xc000007b) Click ok to close the application"
Service Fabric 节点是 Windows 机器。项目使用aspnet core 2.0构建 任何帮助将不胜感激。谢谢!
作为解决方法,您可以创建一个 container 到 运行 这个。它会为您省去进入节点安装东西的麻烦,这会限制您的横向扩展和故障转移选项。
有some people who got it working.
我假设是缺少依赖项问题。
根据您提供的场景和消息The application was unable to start correctly(0xc000007b)
还有其他相关问题:
The application was unable to start correctly (0xc000007b) and Error : the application was unable to start correctly
另一个问题可能是缺少 运行 或访问特定依赖项的权限。
我建议你试试:
- 运行首先通过命令行以管理员身份运行。
- 检查防火墙或network\website权限
- 使用 dependency walker 并检查它的依赖项 loads\fail 并验证它们是否安装在服务器上。