我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf

Posted

技术标签:

【中文标题】我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf【英文标题】:I cannot access wkhtmltopdf from my IIS on Windows hosted Web API 【发布时间】:2019-03-30 23:01:29 【问题描述】:

我开发了一个 ASP.NET MVC WEB Api,并将它发布到我的 Windows 机器上的 IIS。我在代码中使用 NReco html 来生成图像,如 here 所示。问题是当我运行 Action 时它会抛出异常:

拒绝访问路径“C:\inetpub\wwwroot\App_Data\wkhtmltoimage”。

我在 Internet 上阅读了有关此错误的信息,但找不到与我的问题相关的任何内容。显然,我需要对我的 IIS 进行轻微的配置更改以启用对此 App_Data 文件夹的访问,但找不到具体设置。为什么我的 Publish 文件夹中没有 App_Data 文件夹,而在 Visual Studio 中,这个文件夹似乎是空的!?部署后 wkhtmltoimage 在那里如何?

我可以看到绿色建议的解决方案,但老实说我无法理解。

我阅读了this article,其中解释了如何执行此操作,并从 Visual Studio 手动发布 App_Data 文件夹,因为它丢失了,转到 c:/inetpub/wwwroot,单击它的属性,但我看到了我的列表中没有 ASPNET,请参见下图

【问题讨论】:

web.config 中添加的用户限制也会出现此问题。参考here你能分享你的web.config 【参考方案1】:

在 IIS 管理器中,转到应用程序池,选择高级参数。右键单击应用程序池,您将看到您的池的标识。

您必须授予对此池身份的访问权限。 在文件夹 App_Data 的权限下,添加用户“IIS AppPool\YourApplicationPoolIdentity”。

它应该做的事情。

【讨论】:

是的,就是这样。我实际上做了其他事情:完全控制了 IIS_IUSRS(请参阅我在原始帖子中的图片)并且它起作用了。还是谢谢你!【参考方案2】:

我完全控制了 IIS_IUSRS。

【讨论】:

以上是关于我无法从 Windows 托管的 Web API 上的 IIS 访问 wkhtmltopdf的主要内容,如果未能解决你的问题,请参考以下文章

在使用 Owin 自托管的 Web API 中获取远程主机 IP

使用 OWIN 将 Web API 托管为 Windows 服务

OWIN 托管的 web api:使用 windows 身份验证并允许匿名访问

如何将 Windows 身份验证凭据从客户端传递到 Web API 服务

无法在 IIS 托管的 .net web api 项目中运行 powershell 脚本

转换 Web API 以使用自托管