none
Consommer un WebService depuis une bibliothèque de classes? RRS feed

  • Question

  • Bonjour,

    J'essaye depuis des jours de consommer un WebService depuis un projet de type "Bibiothèque de classes". Mais rien!

    J'ai Visual Studio 2008 Pro, je développe en VB.net.

    J'ai crée une solution, dans cette solution j'ai deux projet: un projet "Windows Application" et un projet "Bibliothèque de classes".

    Lorsque je consomme mon WebService depuis le projet "Windows Application", pas de problème. Mais dans le projet "Bibliothèque des classes" ça ne fonctionne pas!

    Pour ajoute mon WebService, je fait un clique droit sur mon projet, puis je clique sur "Ajouter une référence de serve...".

    Je saisi l'adresse URL du WebService, lance la génération des fichiers sources (tout fonctionne), jusqu'à l'execution du logiciel!

    j'ai systématiquement une exception générée, qui me signale qu'il est impossible de trouver le "EndPoint" de mon WebService.

    Comment faire???

    Merci d'avance.

    jeudi 13 août 2009 19:13

Réponses

  • Bonjour,
    La solution consiste à copier la section <system.serviceModel> depuis le fichier app.config de la bibliothèque de classes dans le fichier app.config de l'exécutable qui appelle la bibliothèque de classes.
    Si tu souhaites le faire automatiquement, on doit simplement ajouter une référence au service web dans le projet qui contient le fichier exécutable, utilisant le même nom avec lequel tu l’as ajouté dans la bibliothèque de classes, et il devrait générer le code, quelque chose comme ça:


    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:01:00"
                        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                        useDefaultWebProxy="true">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <security mode="None">
                            <transport clientCredentialType="None" proxyCredentialType="None"
                                realm="" />
                            <message clientCredentialType="UserName" algorithmSuite="Default" />
                        </security>
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost/WebService5/Service1.asmx"
                    binding="basicHttpBinding" bindingConfiguration="Service1Soap"
                    contract="ServiceReference5.Service1Soap" name="Service1Soap" />
            </client>
        </system.serviceModel>
    </configuration>
    

    Cordialement,
    Marius
    lundi 17 août 2009 16:36

Toutes les réponses

  • Bonjour,
    La solution consiste à copier la section <system.serviceModel> depuis le fichier app.config de la bibliothèque de classes dans le fichier app.config de l'exécutable qui appelle la bibliothèque de classes.
    Si tu souhaites le faire automatiquement, on doit simplement ajouter une référence au service web dans le projet qui contient le fichier exécutable, utilisant le même nom avec lequel tu l’as ajouté dans la bibliothèque de classes, et il devrait générer le code, quelque chose comme ça:


    <configuration>
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="Service1Soap" closeTimeout="00:01:00" openTimeout="00:01:00"
                        receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
                        bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                        maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                        messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                        useDefaultWebProxy="true">
                        <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                            maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                        <security mode="None">
                            <transport clientCredentialType="None" proxyCredentialType="None"
                                realm="" />
                            <message clientCredentialType="UserName" algorithmSuite="Default" />
                        </security>
                    </binding>
                </basicHttpBinding>
            </bindings>
            <client>
                <endpoint address="http://localhost/WebService5/Service1.asmx"
                    binding="basicHttpBinding" bindingConfiguration="Service1Soap"
                    contract="ServiceReference5.Service1Soap" name="Service1Soap" />
            </client>
        </system.serviceModel>
    </configuration>
    

    Cordialement,
    Marius
    lundi 17 août 2009 16:36
  • Bonjour,

    Merci beaucoup, votre solution fonctionne très bien, j'ai choisi de réaliser une référence de service dans la couche interface de ma solution (Application Windows) et dans ma DLL de gestion d'erreurs (qui utilise un webservice).

    Super merci beaucoup.
    Cordialement.
    samedi 22 août 2009 15:40
  • Salut,
    C'est mon plaisir de pouvoir t'aider.
    Cordialement,
    Marius

    mercredi 26 août 2009 11:25
  • Hi Marius,

    I've got something different on my project. I have to call an external web service inside my own web service (.asmx) hosted in IIS7.

    As the client Library consuming the web service works right Inside a single executable, same Library does not work Inside a web service method that is hosted in IIS7.

    dimanche 12 juillet 2015 08:49