微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NetNamedPipeBinding 使 Windows 10 上的每个人都可以访问 WCF 主机

如何解决使用 NetNamedPipeBinding 使 Windows 10 上的每个人都可以访问 WCF 主机

我有两个应用程序与 NetNamedPipeBinding 上的 WCF 协议进行通信。一个是在 SYstem 下运行的服务(“S”),另一个是应用程序(“A”)。 “A”创建 WCF 服务。

当“A”以管理员权限运行时,一切正常。但是当在受限用户下运行时,“A”可以创建“S”无法访问的 WCF 服务。 错误是:

System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at net.pipe://app/results that Could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException,if present,for more details. ---> System.IO.PipeException: The pipe endpoint 'net.pipe://app/results' Could not be found on your local machine. 

这个想法是每个用户都可以访问这个 WCF 服务(每个人的凭据)。 可以用 NetNamedPipeBinding 来完成吗?最好在代码中完成整个配置,而不是在配置文件中。

        var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
        var baseAddress = new Uri(url);
        var serviceHost = new ServiceHost(implementor);
        serviceHost.AddServiceEndpoint(typeof(IImplementor),binding,baseAddress);
        serviceHost.open();

解决方法

如果代码相同但访问用户不同,则表示非管理员用户无法访问该服务。

也许你可以试试下面的例子,还是不行,你可以把bug文件提交给官方。

https://docs.microsoft.com/en-us/dotnet/api/system.servicemodel.netnamedpipebinding?view=netframework-4.8

谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。