0

我们有一个 .NET 4.0 Windows 服务,它通过命名管道(使用 IPC)托管端点。该服务在用户 A 的上下文中运行。

我们有一个 ASP.NET 托管的客户端,它请求上述服务公开的操作。该客户端在用户 B 的上下文中运行(通过匿名访问,通过 <identity impersonate="true" />)。

问题:如果我们<identity impersonate="true" />在 web.config 中使用(无法更改),我们会得到“无法连接到 IPC 端口:访问被拒绝”。客户端尝试调用托管操作时的异常。如果<identity impersonate... />不存在(可能是由于不使用 ASP.NET,比如客户端控制台应用程序),我们没有问题。

有没有人知道如何让这个配置工作,所以我们停止接收拒绝访问错误?它与身份验证有关,但我们无法解决。

4

2 回答 2

0

回顾 70-503:net.pipes 仅适用于 Windows 安全性。这很明显,因为整个进程 (WCF) 仅在当前 (Windows) 机器上。默认情况下,ASP.NET 在专用 ASP.NET 用户的凭据下运行,该用户的权限受到严格限制。我不认为 ASP.NET 用户可以访问当前机器、访问本地文件、net.pipes 等。它只能访问您的网站运行所在的文件夹。因此,通过冒充该用户就像确保仅拥有运行网站的权利。

您可以做的是模拟具有适当权限的特定 Windows 帐户。这可以使用编程模拟来完成。或者使用委托。在此处阅读以使用最适合的解决方案。

于 2013-04-04T06:56:30.680 回答
0

由于限制 NetWorkService 查看或访问管道,这是不可能的。

在这里回答

于 2013-04-15T17:37:51.677 回答