Headless Chrome 在 IIS 下失败但在命令行上工作

Headless Chrome fails under IIS but works on command line

我正在使用优秀的 ChromeHtmlToPDF 库无头包装 chrome。我们正在使用它来动态呈现来自网站的 PDF。这在 IIS express 下本地工作,并且在重新编译为控制台应用程序时也可以在服务器上工作,因此该技术有效。但是在IIS下运行,chrome总是立即退出,返回"one or more parameters are invalid"的错误。

经过许多小时的研究,我最终通过 运行 在我自己的用户(受限 IIS 用户)下解决了它,然后比较了优秀的 Microsoft 进程监视器生成的 activity 日志。

我追踪到一个目录的文件权限:C:\Windows\System32\config\systemprofile\AppData\Local\Google\Chrome\User Data

应用程序池用户需要对此目录的写入和修改权限。如果您认为这是可以接受的安全风险,则由您决定;但对我们来说,现在是这样。

这是 headless chrome 存储它的 crashpad 目录的地方。似乎再多的参数调整也无法阻止它这样做。这似乎是一个错误。

希望这对其他人有帮助,我在任何地方都找不到关于此的任何内容。

您可以通过传递 Chrome 自定义用户配置文件目录来解决此问题:

chrome.exe --user-data-dir="C:\NewChromeProfile" ...

此目录将由 Chrome 为 运行 的帐户创建,因此该帐户将具有所需的权限。