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

Windows Communication Foundation .NET Discussion :

Problème de config


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut Problème de config
    Bonjour tout le monde, j'ai un problème pour configurer l'utilisation d'un service WCF.

    Ptit point sur mon archi:

    J'ai créé un service WCF dans une assembly à part:

    Le ServiceContract:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    using BlotterLight.ServiceDataContract;
     
    namespace BlotterLight.ServiceInterface
    {
        // Defines IStudentService here
        [ServiceContract(Namespace = "BlotterLight.ServiceInterface")]
        public interface IBlotterService
        {
            ...
        }
    }
    Le DataContract:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    namespace BlotterLight.ServiceDataContract
    {
        [DataContract]
        public class RfqCdDpEur
        {
            ...
        }
    }
    L'implémentation du service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    using BlotterLight.ServiceDataContract;
    using BlotterLight.ServiceInterface;
     
    namespace BlotterLight.Service
    {
        // NOTE: If you change the class name "Service1" here, you must also update the reference to "Service1" in App.config.
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
        public class BlotterService : IBlotterService
        {
     
        }
    }
    Le but du jeu est maintenant de hoster et de consommer ce service dans une appli web.

    Dans mon appli web, j'ai créé un dossier /WebServices et j'ai ajouté un fichier Service.svc qui host mon service:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <%@ ServiceHost Language="C#" Debug="true" Service="BlotterLight.Service.BlotterService" %>
    Mon web.config contient alors:
    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
     
      <system.serviceModel>
        <behaviors>
          <serviceBehaviors>
            <behavior name="BlotterServiceBehavior">
              <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
              <serviceMetadata httpGetEnabled="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"/>
            </behavior>
          </serviceBehaviors>
          <endpointBehaviors>
            <behavior name="BlotterLightWeb.WebServices.ServiceAspNetAjaxBehavior">
              <enableWebScript />
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
        <services>
          <service name="BlotterLight.Service.BlotterService" behaviorConfiguration="BlotterServiceBehavior">
            <endpoint address="" behaviorConfiguration="BlotterLightWeb.WebServices.ServiceAspNetAjaxBehavior"
              binding="webHttpBinding" contract="BlotterLight.ServiceInterface.IBlotterService" />
          <!--<endpoint address="" binding="wsHttpBinding" contract="BlotterLight.ServiceInterface.IBlotterService">
     
          </endpoint>-->
          </service>
        </services>
      </system.serviceModel>
    Je consomme ce service en AJAX dans une page et tout fonctionne nickel.

    Maintenant, je souhaite consommer ce service dans une autre page mais en code behind cette fois-ci.
    Il va donc falloir que je crée un client.
    Pour ça, clic droit -> add service reference. Je clique sur Discover et je choisi WebServices/Service.svc.

    Mon fichier web.config est alors enrichi avec:
    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
    <bindings>
          <customBinding>
            <binding name="WebHttpBinding_IBlotterService" >
              <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16"
                messageVersion="Soap12" writeEncoding="utf-8">
                <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                  maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              </textMessageEncoding>
            </binding>
          </customBinding>
        </bindings>
        <client>
          <endpoint binding="customBinding" bindingConfiguration="WebHttpBinding_IBlotterService"
            contract="BlotterLight.Service.IBlotterService" name="WebHttpBinding_IBlotterService" />
        </client>
    Quand j'exécute ma page, j'obtiens:
    The CustomBinding on the ServiceEndpoint with contract 'IBlotterService' lacks a TransportBindingElement. Every binding must have at least one binding element that derives from TransportBindingElement.

    Soit, j'ajoute <httpTransport/> à mon binding.

    Maintenant, j'obtiens:
    The Address property on ChannelFactory.Endpoint was null. The ChannelFactory's Endpoint must have a valid Address specified.

    1- Pourquoi VS2008 n'a pas automatiquement généré la propriété Address?
    2- Que mettre?

    J'ai essayé avec address="/WebServices/Service.svc". J'obtiens
    The given URI must be absolute.
    Nom du paramètre : uri

    J'ai essayé avec http://localhost:4042/WebServices/Service.svc. J'obtiens Le serveur distant a retourné une erreur : (404) Introuvable.
    Alors que si je tape cette url dans IE, je vois bien mon service.

    Voilà mon code behind au cas où:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var client = new BlotterServiceClient();
                client.Open();
                var rfq = client.Mafonction();
                // ToDo
                client.Close();

    Que faire maintenant?

    Merci

    edit: désolé pour le pavé

  2. #2
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Bonjour,

    Juste une question, et surement très conne : Est-ce la même web app qui héberge et consomme ton web service ?

    C'est complément débile, mais c'est pour être sûr

  3. #3
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Citation Envoyé par Paul Musso Voir le message
    Bonjour,

    Juste une question, et surement très conne : Est-ce la même web app qui héberge et consomme ton web service ?

    C'est complément débile, mais c'est pour être sûr
    Oui, c'est la même

  4. #4
    Rédacteur
    Avatar de Paul Musso
    Profil pro
    Inscrit en
    Août 2008
    Messages
    368
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2008
    Messages : 368
    Par défaut
    Alors je pense que le problème vient de là.

    Il ne doit pas te générer les infos par rapport au transport car il détecte que le client et le serveur sont les mêmes (ou un truc du genre).

    Tu pourrais utiliser directement le service en instanciant la classe implémentant ton ServiceContract ...

    Sinon, pour avoir un bon fichier de config, créé une autre web app dans la solution, ajoute une référence au web service, fait la fonctionner pour voir si ça marche quand même ^^, et apres récupère les infos qu'il faut du fichier xml généré par le custom tool pour les copier dans ta web app d'origine

  5. #5
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Je vais essayer ça

Discussions similaires

  1. Problème app.config/connexion string
    Par djuju dans le forum VB.NET
    Réponses: 2
    Dernier message: 13/03/2007, 14h16
  2. Problème de config SAMBA/DB2 sur AIX
    Par ALHER dans le forum DB2
    Réponses: 1
    Dernier message: 23/08/2006, 15h54
  3. [Configuration] Problème de config (php.ini)
    Par artotal dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 17/08/2006, 00h54
  4. [Struts] [Tomcat] problème struts-config
    Par danyboy85 dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 10/02/2006, 14h50
  5. [eclipse] [jonas] problèmes de config
    Par sylvanians dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 28/09/2004, 09h15

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