-1

我尝试使用 html-pdf nod 包和 .net core mvc 应用程序创建 PDF。它在本地工作正常。部署到 Azure Web 应用程序时出现以下错误。

在网页中:

SocketException:一个现有的连接被远程主机强制关闭未知位置


IOException: 无法从传输连接中读取数据:现有连接被远程主机强行关闭。

Azure Web 应用程序控制台:

2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices: D:\home\site\wwwroot\Node\createPdf.js:5
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices:         stream.pipe(result.stream);
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices:                ^
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices:
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices: TypeError: Cannot read property 'pipe' of undefined
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices:     at D:\home\site\wwwroot\Node\createPdf.js:5:16
2019-11-22 06:39:58.754 +00:00 [Error] Microsoft.AspNetCore.NodeServices:     at D:\home\site\wwwroot\node_modules\html-pdf\lib\pdf.js:58:21
2019-11-22 06:39:58.755 +00:00 [Error] Microsoft.AspNetCore.NodeServices:     at respond (D:\home\site\wwwroot\node_modules\html-pdf\lib\pdf.js:126:14)
2019-11-22 06:39:58.755 +00:00 [Error] Microsoft.AspNetCore.NodeServices:     at Timeout.execTimeout (D:\home\site\wwwroot\node_modules\html-pdf\lib\pdf.js:91:5)
4

1 回答 1

0

这似乎是由于沙盒限制。您可以根据自己的要求利用 Azure 应用服务容器。

标准/本机 Azure Web 应用程序在称为沙盒的安全环境中运行。每个应用程序都在自己的沙箱中运行,将其执行与同一台机器上的其他实例隔离开来,并提供额外的安全性和隐私性,否则这些应用程序将无法使用 - Azure Web App 沙箱

因此,本质上,Azure 应用服务在 IIS 上运行的 ASP.NET 或 Node.js 等 Windows 上提供了预定义的应用程序堆栈。预配置的 Windows 环境从管理访问、软件安装、对全局程序集缓存的更改中锁定操作系统,也不允许在平台上注册 COM 组件。等等。如果您的应用程序需要比预配置环境允许的更多访问权限,您可以部署自定义 Windows 容器。

查看这些文档以获取有关此主题的更多详细信息:

在 Azure 应用服务中运行自定义 Linux 容器

在 Azure 中运行自定义 Windows 容器(预览版)

于 2019-12-06T10:35:13.337 回答