Problems connecting to WCF Service via NetNamedPipeBinding
- by John
I'm having trouble figuring out how to get a named pipe WCF service to work.
The service is in a seperate assembly from the executable.
The config looks like this:
<system.serviceModel>
<bindings>
<netNamedPipeBinding>
<binding name="NoSecurityIPC">
<security mode="None" />
</binding>
</netNamedPipeBinding>
</bindings>
<client>
<endpoint name="internal"
address="channel1"
binding="netNamedPipeBinding"
bindingConfiguration="NoSecurityIPC"
contract="conplement.TimeService.ICpTimeService" />
</client>
<services>
<service name="cpTimeService">
<host>
<baseAddresses>
<add baseAddress="net.pipe://localhost/" />
</baseAddresses>
</host>
<endpoint
address="channel1"
binding="netNamedPipeBinding"
bindingConfiguration="NoSecurityIPC"
contract="conplement.TimeService.ICpTimeService" />
</service>
</services>
</system.serviceModel>
I'm using a ChannelFactory to create a proxy to access the service host:
ServiceHost h = new ServiceHost(typeof(TimeService), new Uri("net.pipe://localhost/"));
h.AddServiceEndpoint(typeof(ITimeService), new NetNamedPipeBinding("NoSecurityIPC"), "net.pipe://localhost/");
h.Open();
ChannelFactory<ITimeService> factory = new ChannelFactory<ITimeService>("channel1", new EndpointAddress(new Uri("net.pipe://localhost/")));
ICpTimeService proxy = factory.CreateChannel();
using (proxy as IDisposable)
{
this.ds = proxy.LoadData();
}
I'm not sure what I'm doing wrong when I create the ChannelFactory. It can't seem to find the "channel1" in the config. When I create my binding manually and pass it to the ChannelFactory constructor, the factory and the proxy are created but the call to the LoadData() fails (times out).
Can anyone see what I'm doing wrong here?