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

Dotnet Discussion :

Import de WSDL dans VS2008 ou 2010 incomplet


Sujet :

Dotnet

  1. #1
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut Import de WSDL dans VS2008 ou 2010 incomplet
    Bonjour,

    Nous consommons des webservices écrits en JAVA depuis un moteur écrit en C#, sur le framework 3.5, avec VS2008 ou 2010 suivant les besoins.

    Les wsdl de ces services font référence à des XSD qui elles-mêmes font des références à des XSD via des include.

    Le problème est que la création des classes proxy pour ces webservices est incomplète. Des éléments sont absents (généralement des éléments importés depuis des XSD elles mêmes importées depuis d'autres XSD), complètements introuvables dans les classes générées. Et encore, ceci arrive quand j'importe le service en tant que "référence Web". Si j'importe le WS en tant que référence de service, je n'ai absolument rien dans l'explorateur d'objets (même pas le namespace généré), alors que je n'ai aucune erreur ni warning à l'import de la wsdl.

    Le plus étonnant est que depuis d'autres outils (XML Spy, Oxygen, SoapUI) la structure de la wsdl parait tout à fait correcte et les éléments se retrouvent bien à leur place.

    J'ai essayé l'import avec VS2008, avec VS2010, pour les deux en ref Web ou en ref de service, et aucune amélioration.

    Je ne peux malheureusement pas donner ici de lien vers cette wsdl ou vers les xsd, mais peut-être quelqu'un a-t'il déjà été confronté à un problème similaire (au pire, je peux fournir une WSDL en MP) ? Dois-je me tourner, et existe-t'il des solutions externes pour la génération de classes proxy qui prendraient en charge en charge ce genre de services ?

    Merci,

  2. #2
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut
    Bonjour,

    Je reviens ici avec un petit complément d'informations qui pourra peut-être aider à résoudre le problème.

    Après avoir analysé en profondeur les XSD de notre fournisseur, j'ai remarqué que les éléments qui n'étaient pas importés étaient issus de groupes d'attributs eux même contenus dans d'autres groupes d'attributs. La structure de leur XSD est assez complexe et à priori, ça vient de là.

    Je vous donne un exemple : nous avons un type TelephoneType déclaré dans un fichier que nous appelleront common.xsd, et est déclaré comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xs:complexType name="TelephoneType">
            <xs:annotation>
                <xs:documentation>Telephone information</xs:documentation>
            </xs:annotation>
            <xs:attributeGroup ref="ext:ID_OptionalGroup"/>
            <xs:attributeGroup ref="ext:TelephoneInfoGroup"/>
            <xs:attribute name="Operation" type="OperationType">
                <xs:annotation>
                    <xs:documentation>
                        Indicates the required modification to the element.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    ici, le préfixe 'ext' fait référence à un autre fichier XSD dans lequel nous avons, pour l'ID (qui est lui bien importé dans visual studio) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      <xs:attributeGroup name="ID_OptionalGroup">
        <xs:annotation>
          <xs:documentation xml:lang="en">Used to provide an optional unique identifier.</xs:documentation>
        </xs:annotation>
        <xs:attribute name="ID" type="StringLength1to32" use="optional">
          <xs:annotation>
            <xs:documentation xml:lang="en">A unique identifying value assigned by the creating system. The ID attribute may be used to reference a primary-key value within a database or in a particular implementation.</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:attributeGroup>
    Par contre, pour le TelephoneInfoGroup nous avons :

    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
    <xs:attributeGroup name="TelephoneInfoGroup">
        <xs:annotation>
          <xs:documentation xml:lang="en">Information about a telephone number, including the actual number and its usage.</xs:documentation>
        </xs:annotation>
        <xs:attributeGroup ref="TelephoneGroup">
          <xs:annotation>
            <xs:documentation xml:lang="en">Detailed telephone information.</xs:documentation>
          </xs:annotation>
        </xs:attributeGroup>
        <xs:attributeGroup ref="DefaultIndGroup">
          <xs:annotation>
            <xs:documentation xml:lang="en">Indicates that the receiving system should assume the default value if the user specifies no overriding value or action.</xs:documentation>
          </xs:annotation>
        </xs:attributeGroup>
        <xs:attribute name="RPH" type="RPH_Type" use="optional">
          <xs:annotation>
            <xs:documentation xml:lang="en">Used elsewhere in the message to reference a specific telephone number (including faxes).</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:attributeGroup>
    On voit dans ce petit bout de XSD que :

    - un attribut RPH (qui apparaît bien dans VS) est déclaré

    - un autre groupe d'attributs (TelephoneGroup) lui n'est pas importé.

    Le TelephoneGroup est déclaré dans ce même fichier, et contient lui même d'autres références à des groupes d'attributs déclarés eux aussi dans ce fichier :

    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
    <xs:attributeGroup name="TelephoneGroup">
        <xs:annotation>
          <xs:documentation xml:lang="en">Detailed telephone information.</xs:documentation>
        </xs:annotation>
        <xs:attributeGroup ref="PrivacyGroup">
          <xs:annotation>
            <xs:documentation xml:lang="en">Allows for control of the sharing of telephone information between parties.</xs:documentation>
          </xs:annotation>
        </xs:attributeGroup>
        <xs:attributeGroup ref="TelephoneAttributesGroup">
          <xs:annotation>
            <xs:documentation xml:lang="en">Provides telephone information details.</xs:documentation>
          </xs:annotation>
        </xs:attributeGroup>
        <xs:attributeGroup ref="FormattedInd">
          <xs:annotation>
            <xs:documentation xml:lang="en">Identifies if the associated data is formatted into its individual pieces, or exists as a single entity.</xs:documentation>
          </xs:annotation>
        </xs:attributeGroup>
      </xs:attributeGroup>
    Je pense donc qu'il est assez clair que le problème vient bien des attributeGroups imbriqués, qui ne sont peut-être pas supportés par VS ?

    A priori, il semble que ce soit une norme XSD tout à fait correcte, étant donné que tous les outils XML que j'utilise les parsent correctement (oXygen, SoapUI).

    Par contre, tout ceci ne me dit pas pourquoi en référence de Service WCF je n'ai absoluemnt rien qui est importé, mais si nous pouvons le faire fonctionner en référence Web, c'est parfait.

    Quelqu'un connaitrait-il un moyen d'importer correctement ce genre d'information ? Existe-t'il d'autres outils pour générer les classes proxy qui me permettraient de résoudre ce problème ? J'ai regardé vite fait sur le net, mais je n'ai pas trouvé d'informations.

    Merci !

Discussions similaires

  1. PB pour import de requête dans Excel 2010
    Par Orion34080 dans le forum IHM
    Réponses: 5
    Dernier message: 22/10/2014, 16h22
  2. Importer plusieurs WSDL dans SoapUI ?
    Par romdane dans le forum Services Web
    Réponses: 0
    Dernier message: 22/10/2013, 19h20
  3. [XL-97] Importer fichier 97 dans 2010
    Par PierreQuébec dans le forum Conception
    Réponses: 4
    Dernier message: 06/02/2012, 12h49
  4. [SP-2010] Importer projet C# dans un Visual WebPart Sharepoint 2010
    Par diabli73 dans le forum SharePoint
    Réponses: 6
    Dernier message: 24/11/2011, 11h03
  5. Import WSDL dans Visual Studio : warning
    Par kaboume dans le forum Services Web
    Réponses: 2
    Dernier message: 30/08/2007, 16h47

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