Ich habe zwei Anwendungen, WCF-Endpunkte unter Verwendung Named Pipes für die Kommunikation verfügbar macht.Consuming-Dienst über Named Pipes
Eine App ist eine WPF-Benutzeranwendung und die andere ist ein Windows-Dienst, wenn ich einen Anruf von der Benutzer-App zum Win-Service mache, aber immer wenn der Windows-Dienst den WPF-Anwendungsendpunkt aufruft, erhalte ich ein System .ServiceModel.CommunicationObjectFaultedException, das angibt, dass das Kommunikationsobjekt nicht verwendet werden kann, während es sich um eine fehlerhafte Ausnahme handelt.
Die lustige Sache ist, dass, wenn ich meinen Code kopieren und in eine Konsolenanwendung einfügen, es gut funktioniert.
Hier ist der Code Ich bin mit dem Kommunikationsobjekt
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");
}
Ändern Sie einfach das Konto, in dem der Dienst ausgeführt wird. Keine Notwendigkeit, nicht-WCF-Named-Pipes gehen – MickyD
Dank @MickyD, aber dieser Dienst wird in vielen Umgebungen bereitgestellt, wo der Benutzer minimale Berechtigungen haben, also gibt es keine Möglichkeit um beide für denselben Benutzer auszuführen. – bateloche