IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Problème deploiement Web Service [Débutant]


Sujet :

Services Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut Problème deploiement Web Service
    Bonjour,

    J'ai développé un web service WCF avec une liaison WSDualHttpBinding et qui utilise l'authentification via userName / password et la classe UserNamePasswordValidator.

    J'ai également développé une appli cliente qui appel le web service pour s'authentifier et qui passe donc par ma méthode "validate".

    Tous fonctionne très bien en local.

    J'ai fait un test de deploiement :

    - Web service + appli cliente sur la même machine (=tous va bien)

    - Web service + appli cliente sur une autre machine (=échec)

    J'arrive pourtant de mon appli cliente sur une autre machine à accéder à mon web service, j'arrive à afficher le fichier wsdl et aucune erreur ne m'est retourné lorsque j'appelle une méthode de mon web service sauf un time out me signalant que le temps d'attente de la réponse est dépassé.

    J'ai donc attaché visual studio au processus de mon web service pour le debuguer et refait un test de connexion en local (dans ce cas tous ce passe bien et je passe dans ma méthode validate), puis je refait un test depuis mon autre machine et là rien ne se passe (je ne passe jamais dans ma méthode validate et ne retourne jamais aucune réponse).

    N'ayant aucun message d'erreur je n'arrive pas à cerner le problème. Si vous auriez des pistes de réflexion à me faire par je suis preneuse.

    Merci d'avance.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2008
    Messages : 97
    Par défaut
    Bonjour,

    si tu es sur un réseau d'entreprise, vérifie qu'il n'y a pas un firewall qui bloque tes requêtes et/ou que tu ne passes pas par un proxy auquel cas tu devras adapter les attributs useDefaultWebProxy, bypassProxyOnLocal ... de l'élément binding de ton client.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    J'ai fait un test de connexion entre une machine cliente et un serveur iis distant avec les firewall désactiver pour faire mes test.

    Apparemment mon soucis viens du fait que a distance on doit configurer la propriété clientbaseadress.

    J'ai donc refait le test avec cette config mais j'ai toujours le même résultat (timeout)

    J'ai fait un test en conservant la configuration initiale de mon serveur qui est celle ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <system.serviceModel>
        <services>
          <service name="WS.ServiceProduits" behaviorConfiguration="behaviorConfig">
            <endpoint address="" binding="wsDualHttpBinding" bindingConfiguration="wsDualHttp" contract="WS.Interface.IProduits">
              <identity>
                <dns value="CertServerProduits"/>
              </identity>
            </endpoint>
          </service>
        </services>
        <bindings>
          <wsDualHttpBinding>
            <binding name="wsDualHttp">
              <security mode="Message">
                <message clientCredentialType="UserName" />            
              </security>
            </binding>
          </wsDualHttpBinding>
        </bindings>
    <behaviors>
          <serviceBehaviors>
            <behavior name="behaviorConfig">
              <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
              <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
              <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
              <serviceDebug includeExceptionDetailInFaults="true" />
              <serviceCredentials>
                <clientCertificate>
                  <authentication certificateValidationMode="None" revocationMode="NoCheck" />
                </clientCertificate>
                <serviceCertificate storeName="My" storeLocation="LocalMachine" x509FindType="FindBySubjectName" findValue="CertServerProduits" />
                <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="WS.CustomUserNameValidator, WS" />
              </serviceCredentials>
              <serviceAuthorization principalPermissionMode="Custom">
                <authorizationPolicies>
                  <add policyType="WS.CustomAuthorizationPolicy, WS" />
                </authorizationPolicies>
              </serviceAuthorization>
            </behavior>
          </serviceBehaviors>
        </behaviors>
    Et j'ai modifié mon fichier de configuration client de la façon suivante, pour utiliser la propriété clientbaseadress :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <bindings>
                <wsDualHttpBinding>
                    <binding name="WSDualHttpBinding_Config"  clientBaseAddress="http://IPClient:8085/">
                        <security>
                            <message clientCredentialType="UserName" />
                        </security>
                    </binding>
                </wsDualHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://IPServer/WS/ServiceProduits.svc" behaviorConfiguration="myClientBehavior"
                    binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_Config"
                    contract="ServiceReference1.Produits" name="WSDualHttpBinding_Produits">
                    <identity>
                        <dns value="CertServerProduits" />
                    </identity>
                </endpoint>
            </client>
          <behaviors>
            <endpointBehaviors>
              <behavior name="myClientBehavior">
                <clientCredentials>
                  <serviceCertificate>
                    <authentication certificateValidationMode="None" revocationMode="NoCheck"/>
                  </serviceCertificate>
                </clientCredentials>
              </behavior>
            </endpointBehaviors>
          </behaviors>

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Sous quel OS tourne le client ?

    [EDIT] : Il y a de fortes chances pour que les timeout proviennent d'un problème localisé sur le réseau. On ne connait pas la topologie du réseau sur lequel tu travailles, mais il faut tenir compte du fait que si tu as un firewall entre le client et le serveur, il peut y avoir des règles NAT dans les deux sens :

    Client ==> Firewall ==> Serveur
    Client <== Firewall <== Serveur

    C'est un premier point à vérifier. Il peut également y avoir un routeur + des règles NAT, qui pourraient empêcher tout callback. Mais bon il n'y a que toi qui peut le savoir....

    Ensuite, pour utiliser wsDualHttpBinding il faut s'assurer que la connexion n'est jamais interrompue entre le client et le serveur, car ça fonctionne sur un principe de session. Voir ici pour plus d'infos : http://www.dotnetconsult.co.uk/weblo...1363fa51e.aspx ou là : http://blogs.msdn.com/b/ralph.squill...-no_2e00_.aspx

    Si tu n'arrives pas à trouver de solution, tu peux rajouter un composant entre ton serveur et ton client : le Service Bus Relay Service, qui fait partie de la plateforme Azure.
    Ca permet de simplifier la communication et de s'affranchir de la configuration des firewalls et du NAT, mais ça demande de passer par Azure.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Pour le moment on est juste "en local" c'est a dire que j'ai une machine qui est monté exprès pour les test où il n'y a rien dessus à par mon web service et j'essaie d'y accéder depuis mon PC où j'ai mon appli cliente.

    J'ai désactiver les firewall de mon PC ainsi que celui de la machine test et il n'y a pas de routeur ni de règle NAT de spécifier en particulier sur mon réseau.

    [EDIT] : Je n'ai pas encore regardé les liens, je vais le faire de suite.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 232
    Par défaut
    Pour info, j'utilise un server IIS sur windows 7, par conséquent l'utilisation de Service Bus Relay Service sur windows azure n'est pas possible dans ma situation.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Deploiement Web Service
    Par vinceLeBarbare dans le forum Services Web
    Réponses: 2
    Dernier message: 24/01/2008, 12h15
  2. deploiement Web service
    Par mohamed dans le forum Services Web
    Réponses: 5
    Dernier message: 07/11/2007, 00h33
  3. Problème déploiement Web Service sous Axis
    Par djalouk dans le forum Services Web
    Réponses: 4
    Dernier message: 17/09/2007, 16h09
  4. Problème appel Web Service SharePoint
    Par bugmenot dans le forum Windows
    Réponses: 0
    Dernier message: 14/09/2007, 15h09
  5. [BI Publisher Enterprise] Problème Discoverer Web Service
    Par Thomad dans le forum Administration
    Réponses: 0
    Dernier message: 22/08/2007, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo