통신용 명명 된 파이프를 사용하여 WCF 끝점을 제공하는 두 가지 응용 프로그램이 있습니다.명명 된 파이프를 통한 서비스 사용
하나의 응용 프로그램은 WPF 사용자 응용 프로그램이고 다른 하나는 Windows 서비스입니다. 사용자 응용 프로그램에서 win 서비스로 전화를 걸면 괜찮습니다. 그러나 Windows 서비스가 WPF의 응용 프로그램 끝점을 호출 할 때마다 시스템 .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