在 IIS 上的 WebAPI 中访问被拒绝的命名管道

Posted

技术标签:

【中文标题】在 IIS 上的 WebAPI 中访问被拒绝的命名管道【英文标题】:access denied named pipes in WebAPI on IIS 【发布时间】:2020-10-09 01:58:09 【问题描述】:

为了控制 Windows 服务(和其他一些东西),我们使用 WebAPI。对于 API 和 Windows 服务之间的通信,我使用了 NampedPipe。当我在 Visual Studio 中运行代码时,一切正常。将 api 部署到 IIS 后,它得到一个 IO 异常access denied。这是配置问题还是无法从 IIS API 访问 NamedPipes?

不同的方法可以做什么? ip连接?

感谢您的帮助!

编辑

经过一些研究和尝试和错误,我得出结论:要让 NamedPipes 工作,两个进程必须在同一用户下运行。 因此,我为服务和 iis 网站分配了同一个用户,并尝试了一下,它成功了。

在不同用户的 iis 上运行网站是否安全?

【问题讨论】:

您可以尝试在 URLACL 中注册端口。 netsh http add urlacl .... 【参考方案1】:

在 IIS express 中激活应用程序 当您在开发环境中调试应用程序时。在 IIS express 中,您当前的登录用户用于执行应用程序。

但是,当您在 IIS 中部署应用程序时,所有内容都由应用程序池标识执行并在会话 0 中隔离。

所以大多数时候,您可以尝试将应用池标识设置为本地系统。

由于本地系统授予应用程序过多的权限,使用专用帐户来托管您的 IIS 应用程序是个好主意。

只要你遵循最少权限原则,为你的网站使用不同的用户就可以安全了。

【讨论】:

以上是关于在 IIS 上的 WebAPI 中访问被拒绝的命名管道的主要内容,如果未能解决你的问题,请参考以下文章

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

在 IIS7 中托管 ASP.NET 会导致访问被拒绝?

安好iis后 显示网站拒绝访问此网页,需要登录

IIS拒绝访问

在 Web API 中启用了 CORS,但访问被拒绝

使用应用程序池标识在 IIS 上的 ASP.NET 中查询 Win32_Printer 时权限被拒绝