WCF命名管道服务器因AddressAccessDeniedException

时间:2017-01-16 19:28:16

标签: c# wcf named-pipes

我有一个托管WCF命名管道服务器的进程。

该进程在没有管理员权限的用户帐户下运行。 当客户端尝试连接到管道时,它会收到超时异常,服务器将失败并出现以下异常:

  

抛出异常。来源:System.ServiceModel 4.0.0.0。异常详细信息:System.ServiceModel.AddressAccessDeniedException:无法侦听管道' net.pipe:// localhost / path / to / endpoint':访问被拒绝。 (5,0x5)---> System.IO.PipeException:无法侦听管道' net.pipe:// localhost / path / to / endpoint':访问被拒绝。 (5,0x5)      ---内部异常堆栈跟踪结束---      在System.ServiceModel.Channels.PipeConnectionListener.CreatePipe()      在System.ServiceModel.Channels.PipeConnectionListener.BeginAccept(AsyncCallback回调,对象状态)      在System.ServiceModel.Channels.ConnectionAcceptor.AcceptIfNecessary(Boolean startAccepting)

阅读Chris Dickson's blog后,我可以想到导致这种情况的三种可能原因:

  1. 不知何故,用户未加入ACL
  2. 未向用户授予FILE_CREATE_PIPE_INSTANCE权限
  3. 网络用户组的拒绝ACE拒绝许可
  4. 注意:

    • 使用非WCF命名管道,将当前用户和内置管理员添加到ACL工作正常。
    • 在SYSTEM帐户下运行的进程中的类似端点工作正常。
    • 在我自己的用户帐户下测试代码时,一切正常。
    • 主机必须保持进程,并且必须具有非管理员权限。
    • 我尝试按照Chris Dickson's blog中的建议将当前用户和内置管理员添加到ACL中,但它没有帮助。
    • 我尝试将NetNamedPipeSecurityMode设置为None,但这也没有帮助。

0 个答案:

没有答案