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
Vous devez vous connecter pour publier un commentaire.
Assurez-vous que
IIS
est configuré pour utiliserWindows Process Activation Service(WAS)
:sélectionnez
Programs and Features
.Turn Windows Features on or off
.Microsoft .NET Framework 3.0(or 3.5)
nœud et de vérifier laWindows Communication Foundation Non-HTTP Activation feature
.Assurez-vous que Net.Pipe Écouteur Adaptateur service est en cours d'exécution:
run
& ouvrirServices.msc
Net.Pipe Listener Adapter
service est en cours d'exécution.Dans votre Application.la configuration, vous avez utilisé
baseAddress
avechttp
, essayez de modifier que pournet.pipe
:voir NetNamedPipeBinding pour plus de détails.
Mise à jour:
Vous devez ajouter
bindingConfiguration
dansendpoint
comme :et ajouter réelle
bindingConfiguration
comme:Mise à jour de réponse.
Si je mettre à jour l'Application.Config pour utiliser votre code, il me donne une erreur quand je lance le service. "Service sur l'Ordinateur Local a démarré puis s'est arrêté. Certains services d'arrêter automatiquement s'ils ne sont pas utilisés par d'autres services ou programmes"
Voici trace de l'erreur du Journal des Événements "de Service ne peut pas être démarré. Système.InvalidOperationException: impossible de trouver une adresse de base qui correspond le schéma http pour le point de terminaison avec la liaison WSHttpBinding. Enregistré adresse de base, les régimes de [net.pipe]. "
Merci @PranavSingh 🙂 Vous avez sauvé ma journée! 🙂
OriginalL'auteur Pranav Singh
J'ai eu le même message d'erreur pop-up. J'ai été en cours d'exécution à partir de Visual Studio 2013, sur windows 8.1. La solution pour moi a été l'exécution de Visual Studio en tant qu'Administrateur.
OriginalL'auteur Leighner
J'ai également exécuter Visual Studio 2013 sur windows Server 2012, qui est essentiellement la même que 8.1, le redémarrage en tant qu'administrateur, également résolu le problème pour moi.
Espère que cela aide!
OriginalL'auteur audreyyy...
J'ai eu ce problème parce que j'ai été en utilisant un âgées tutoriel, et en essayant de configurer par programmation.
La partie qui me manquait était de fournir les métadonnées d'extrémité (merci, ce post!).
OriginalL'auteur Ben