2012-12-19 3 views
3

J'ai précédemment demandé à question de résoudre l'exception SecurityNegotiationException lors de la tentative d'accès à un service WCF à partir d'un ordinateur distant. Cette exception a été résolue grâce à la réponse de ValtasarIII.Impossible de se connecter au service WCF distant - TimeoutException

Maintenant, j'ai un problème différent. J'ai hébergé mon service sur un serveur et je veux me connecter à l'aide d'une application cliente. Mais, lorsque je tente d'abonner au service de l'application client, rien ne se passe et à la fin je reçois l'exception:

The open operation did not complete within the allotted timeout of 00:00:59.9939996. The time allotted to this operation may have been a portion of a longer timeout. 

(je peux partager la trace de la pile si nécessaire)

Bien que quand je essayer de tester si le service est en cours d'exécution, je peux y accéder avec succès via le navigateur de la machine client.

Voici mes configurations:

service - web.config

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="wsHttpDual"> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <protocolMapping> 
     <add scheme="http" binding="wsDualHttpBinding" bindingConfiguration="wsHttpDual"/> 
    </protocolMapping> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

client - app.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="WSDualHttpBinding_ISampleContract" clientBaseAddress="http://95.138.188.232:8000/myClient/"> 
      <!--<security mode="Message"> 
      <message clientCredentialType="Windows" algorithmSuite="Default" /> 
      </security>--> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://95.138.188.232/autofxtools/service.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ISampleContract" 
      contract="ISampleContract" name="WSDualHttpBinding_ISampleContract"> 
     <identity> 
      <servicePrincipalName value="host/95.138.188.232" /> 
     </identity> 
     </endpoint> 

    </client> 
    </system.serviceModel> 
</configuration> 

J'ai cherché une solution, mais rien n'a travaillé pour moi. La configuration du service semble ne suggérer aucune exigence de sécurité. Mais, le client avec la même configuration fonctionne en fait à partir de la même machine que le Service mais pas sur une machine distante. Cela signifie-t-il qu'il existe toujours une authentification Windows (par défaut pour wsDualHttpBinding)? Si oui, où vais-je mal?

En espérant obtenir des commentaires positifs.

Cordialement.

Répondre

2

Cela peut être un problème de pare-feu. Je suppose que vous hébergez le service au sein d'ISS - êtes-vous sûr que les ports respectifs sont ouverts? Que se passe-t-il lorsque vous essayez d'accéder au service via un navigateur?

aussi, je l'ai lu dans un forum allemand ce qui suit:

anscheinend Tritt das nur bei problème WsDualBinding auf, wenn der Port 80 belegt ist. Pour plus d'informations, veuillez contacter ClientBaseAdress zu ändern. Einzige Möglichkeit ist hier wohl netTcpBinding.

Ce qui signifie en anglais:

Il est évident que ce problème se pose lors de l'utilisation WsDualBinding tandis que le port 80 est déjà occupé. Il ne semble y avoir aucun moyen de changer le port en utilisant ClientBaseAddress. La seule façon semble être d'utiliser netTcpBinding.

+0

Oui je l'héberge via IIS. Et comme je l'ai mentionné, je peux y accéder via un navigateur sur une machine client –

+0

Etes-vous sûr que l'URL du service dans la configuration du client est correcte? 'http: // 95.138.188.232/autofxtools/service.svc' –

+0

En outre, vous fournissez' clientBaseAddress = "http://95.138.188.232:8000/myClient/" 'dans la configuration du client - est-ce correct aussi? ? –

Questions connexes