1
我有两个应用程序公开使用命名管道进行通信的WCF端点。通过命名管道使用服务
一个应用程序是一个WPF用户应用程序,另一个应用程序是Windows服务,当我从用户应用程序调用win服务时它没事,但每当Windows服务调用WPF的应用程序端点时,我都会收到一个System .ServiceModel.CommunicationObjectFaultedException声明通信对象在发生故障异常时无法使用。
有趣的是,如果我将我的代码复制并粘贴到控制台应用程序,它的工作原理就好了。
这里是我用来创建通信对象
public void CallService()
{
using (var channel = GetServiceClient())
{
channel.Open();
var service = channel.CreateChannel();
service.DoFoo();
}
}
private static ChannelFactory<IFooService> GetServiceClient()
{
return new ChannelFactory<IFooService>(
new NetNamedPipeBinding
{
Security = new NetNamedPipeSecurity { Mode = NetNamedPipeSecurityMode.None }
},
@"net.pipe://barAddress/fooService");
}
只需更改服务运行的帐户。无需转到非WCF命名管道 – MickyD
谢谢@MickyD,但此服务部署到许多用户拥有最低权限的环境中,因此无法使用在同一用户上运行。 – bateloche