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