Pas de point de terminaison de l'écoute au net.pipe

J'obtiens l'erreur suivante:

Il n'y a pas de point de terminaison de l'écoute à
net.tuyau://localhost/ServiceModelSamples/service que peut accepter le
message. Cela est souvent causé par une mauvaise adresse ou du SAVON d'action.
Voir InnerException, le cas échéant, pour plus de détails.

Je fais appel WCF auto service hébergé à l'intérieur de windows service d'un autre WCF appel comme suit.

                   _host = new ServiceHost(typeof(CalculatorService),
            new Uri[] { new Uri("net.pipe://localhost/PINSenderService") });

        _host.AddServiceEndpoint(typeof(ICalculator),
                new NetNamedPipeBinding(),
                "");

        _host.Open();

        ChannelFactory<ICalculator> factory = new ChannelFactory<ICalculator>(
            new NetNamedPipeBinding(NetNamedPipeSecurityMode.None),
            new EndpointAddress("net.pipe://localhost/PINSenderService"));
        ICalculator proxy = factory.CreateChannel();
        proxy.SendPin(pin);
        ((IClientChannel)proxy).Close();
        factory.Close();

Auto-Hébergé Service WCF

 namespace PINSender
{
//Define a service contract.    
public interface ICalculator
{
[OperationContract]
void SendPin(string pin);
}
//Implement the ICalculator service contract in a service class.
public class CalculatorService : ICalculator
{
//Implement the ICalculator methods.
public void  SendPin(string pin)
{
}
}
public class CalculatorWindowsService : ServiceBase
{
public ServiceHost serviceHost = null;
public CalculatorWindowsService()
{
//Name the Windows Service
ServiceName = "PINSenderService";
}
public static void Main()
{
ServiceBase.Run(new CalculatorWindowsService());
}
//Start the Windows service.
protected override void OnStart(string[] args)
{
if (serviceHost != null)
{
serviceHost.Close();
}
//Create a ServiceHost for the CalculatorService type and 
//provide the base address.
serviceHost = new ServiceHost(typeof(CalculatorService));
//Open the ServiceHostBase to create listeners and start 
//listening for messages.
serviceHost.Open();
}
protected override void OnStop()
{
if (serviceHost != null)
{
serviceHost.Close();
serviceHost = null;
}
}
}
//Provide the ProjectInstaller class which allows 
//the service to be installed by the Installutil.exe tool
[RunInstaller(true)]
public class ProjectInstaller : Installer
{
private ServiceProcessInstaller process;
private ServiceInstaller service;
public ProjectInstaller()
{
process = new ServiceProcessInstaller();
process.Account = ServiceAccount.LocalSystem;
service = new ServiceInstaller();
service.ServiceName = "PINSenderService";
Installers.Add(process);
Installers.Add(service);
}
}
}

App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="PINSender.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>            
<add baseAddress="net.pipe://localhost/PINSenderService"/>
</baseAddresses>
</host>
<endpoint address=""
binding="netNamedPipeBinding"
contract="PINSender.ICalculator" />        
<endpoint address="mex"
binding="mexNamedPipeBinding"
contract="IMetadataExchange" />                
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata httpGetEnabled="False"  />
<serviceDebug includeExceptionDetailInFaults="False"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

OriginalL'auteur Hammad Bukhari | 2014-05-07