2013-04-05 2 views
3

J'ai un hôte de service WCF dans IIS8 et je veux utiliser une liaison net.tcp.IIS8 Il n'y avait pas de point d'écoute à l'écoute net.tcp:

J'ai cette configuration:

Web.config:

<service behaviorConfiguration="MyBehavior" 
    name="DecryptService.EmailCenterDecryptTCP"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://XX.XX.XX.XX:808/VirtualFolder/Service.svc" /> 
     </baseAddresses> 
    </host> 

    <endpoint address="" 
      binding="netTcpBinding" 
      bindingConfiguration="portSharingBinding" 
      name="MyServiceEndpoint" 
      contract="ServiceNamespace.IService"> 
    </endpoint> 

    <endpoint address="mextcp" 
      binding="mexHttpBinding" 
      bindingConfiguration="" 
      name="MyServiceMexTcpBidingEndpoint" 
      contract="IMetadataExchange" /> 
</service> 

Lorsque je tente de consommer le service dans la même machine que IIS8 avec la configuration suivante fonctionne très bien:

<client> 
     <endpoint address="net.tcp://YY.YY.YY.YY:808/VirtualFolder/Service.svc" 
      binding="netTcpBinding" bindingConfiguration="MyServiceEndpoint" 
      contract="ServiceReference1.IService" name="MyServiceEndpoint" /> 
    </client> 

YY.YY.YY.YY est l'adresse IP locale de la machine mais lorsque j'essaie de consommer le service dans une autre machine en changeant YY.YY.YY.YY vers l'adresse IP externe de la machine (ZZ.ZZ.ZZ.ZZ) IIS8 I obtenez l'erreur suivante:

There was no endpoint listening at net.tcp://ZZ.ZZ.ZZ.ZZ/VirtualFolder/Service.svc that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details. 

Des idées? Merci et désolé pour mon mauvais anglais

EDIT:

J'ai fait une application console en cours d'exécution d'un ServiceHost remplaçant IIS et avec cette configuration, il fonctionne sur Internet

var svh = new ServiceHost(typeof (Service)); 
svh.AddServiceEndpoint(typeof (ServiceNamespace.IService), new NetTcpBinding(SecurityMode.None), "net.tcp://serverLocalIp:808"); 
svh.Open(); 

Console.WriteLine("SERVER - Running..."); 
stopFlag.WaitOne(); 

Console.WriteLine("SERVER - Shutting down..."); 
svh.Close(); 

Console.WriteLine("SERVER - Shut down!"); 

Toute idée ce qui est erroné avec IIS exécutant le même service sur Internet? travaille localement. Merci

Répondre

4

Vous devez également configurer IIS pour recevoir une connexion Net.TCP.

Sous Advanced Settings de votre application IIS, puis sous Enabled Protocols vous assurer que vous avez http,net.tcp noter qu'il n'y a pas d'espace, si vous avez un espace, il échouera.

http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/02/08/iis-7-support-for-non-http-protocols.aspx

+0

Mais si j'ai un espace « http, net.tcp » ne devrait pas manquer, même pour les appels locaux? –

+1

J'ai examiné IIS et j'ai tout ok .. le problème est que si j'appelle le service de la même machine que IIS8 fonctionne (localhost) tout fonctionne bien mais quand j'appelle le même service en dehors de la machine qui exécute IIS je reçois erreur –

+0

Cela ressemble à un pare-feu vous bloque alors. – Middas

Questions connexes