2014-07-02 3 views
0

J'ai un service WCF dulpex, hébergé dans un service Windows. J'ai installé le service Windows à partir de la ligne de commande via InstallUtil.exe, démarrez le service à partir du panneau de gestion de service. Il est maintenant temps de tester WCF. J'ai donc ajouté un nouveau projet de console en tant que client, la prochaine étape consiste à ajouter une référence Web au projet. Cependant, j'ai eu une erreur:Héberger un service WCF dans un service Windows mais le point de terminaison n'a pas été trouvé

There was an error downloading `http://localhost:8733/KeyValueService/_vti_bin/ListData.svc/$metadata`. 
Unable to connect to the remote server 
No connection could be made because the target machine actively refused it 127.0.0.1:8733 
Metadata contains a reference that cannot be resolved: `http://localhost:8733/KeyValueService`. 

Le app.config dans le projet de service a:

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name=""> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<services> 
    <service name="VoiceApp.KeyValueService"> 
    <endpoint address="http://localhost:8733/KeyValueService/" binding="wsDualHttpBinding" contract="VoiceApp.IService1" /> 
    <endpoint address="http://localhost:8733/KeyValueService/mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 
</services> 
<bindings> 
    <basicHttpBinding> 
    </basicHttpBinding> 
</bindings> 
<client> 
</client> 

J'ai suivi la configuration par Metatata Exchange Endpoint Blog, mais ce ne serait pas utile.

également à l'intérieur du service Windows, nous avons:

protected override void OnStart(string[] args) 
    { 
     if (serviceHost != null) 
     { 
      serviceHost.Close(); 
     } 
     serviceHost = new ServiceHost(typeof(KeyValueService)); 
     serviceHost.Open(); 
     MyApplication.Start(); // a long running code... 
    } 

Mise à jour:

Mon étape a été la création d'un projet de service Windows, puis a ajouté un service WCF.

+1

Le lien de service est-il accessible depuis le navigateur? Si non, essayez de désactiver le pare-feu – Uriil

+0

Erreur: Cette page ne peut pas être affichée à partir de IE. –

+0

Le point de terminaison que vous avez ressemble à IIS Express. Je n'ai pas créé de service duplex auparavant, mais j'ai créé un service WCF dans un hôte de service Windows. Je m'attendrais à ce que le point de terminaison soit tcp ou nommé pipes. Pouvez-vous confirmer que le service Windows ne plante pas lorsqu'il démarre? – Adam47

Répondre

-1

Je sais que c'est un ancien article, mais j'ai trouvé que si vous remplacez 'localhost' par l'adresse IP réelle du point de terminaison, cela résout ce problème.

+0

S'il vous plaît ne pas publier [réponses identiques] (// stackoverflow.com/a/36651787) à plusieurs questions. Postez une bonne réponse, puis votez/marquez pour fermer les autres questions en tant que doublons. Si la question n'est pas un doublon, * adaptez vos réponses à la question. * –

Questions connexes