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 :

Création d'un service net tcp : Erreur lors de l'ajout d'une référence de service


Sujet :

Windows Communication Foundation .NET

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut Création d'un service net tcp : Erreur lors de l'ajout d'une référence de service
    Bonjour,

    Après plusieurs recherches je ne trouve toujours pas la solution a mon erreur :
    J'ai créer la partie serveur WCF, mais lorsque j'essai d’ajouter une référence de service a cette adresse j'ai l'erreur suivante :
    Metadata contient une référence qui ne peut pas être résolue*: 'net.tcp://localhost:9292/MonServiceWCF'.
    Metadata contient une référence qui ne peut pas être résolue*: 'net.tcp://localhost:9292/MonServiceWCF'.
    Si le service est défini dans la solution actuelle, essayez de générer la solution et d'ajouter de nouveau la référence du service.
    Cette erreur survient lorsque j'utilise l'assistant d'ajout de référence de service sous visual.

    Voici mon fichier de config coté serveur :
    Code xml : 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
     
    <system.serviceModel>
        <bindings>
          <netTcpBinding>
            <binding name="netTcpBindingConfig">
              <security mode="None" />
            </binding>
          </netTcpBinding>
        </bindings>
        <services>
          <service name="ProjetTest.ClasseServices"
                   behaviorConfiguration="MonServiceWCF.Behavior">
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:9292/MonServiceWCF" />
              </baseAddresses>
            </host>
            <endpoint contract="ProjetTest.IClasseServices"
                      address="" 
                      binding="netTcpBinding"
                      bindingConfiguration="netTcpBindingConfig"
                      name ="TcpEndPoint"/>
     
            <endpoint name="MetaDataTcpEndpoint"
              contract="IMetadataExchange"
                      address="mex"
                      binding="mexTcpBinding"/>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="MonServiceWCF.Behavior">
              <serviceMetadata httpGetEnabled="false"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
      </system.serviceModel>

    J'ai fait un essai en faisant une config en basichttpbinding tout a fonctionné, sauf la réception de trame (trop volumineuse), c'est pour cela que je suis passé en tcp.

    Mon serveur se lance bien, sans erreurs. (J'ai même essayé de changer de port)
    Si quelqu'un a une idée de l'erreur commise.

    Merci.

  2. #2
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut Piste
    Mon problème est issue de mon interface, je n'ai plus qu'a trouver la méthode qui ne passe pas.

    Je les ai toutes commentées sauf une et mon client est bien construit.

    Par contre quels sont les modifications a faire pour augmenter la taille des trames ?
    J'ai trouver un peu de tout sur le net :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maxReceivedMessageSize
    maxBufferSize
    Mais coté client je ne sais pas quoi mettre.

    Merci

  3. #3
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Dans ta config, je vous htttpgetenabled a false(dans servicemetadata du behavior). Donc le get référence ne peut pas trouver les metadata.

  4. #4
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut
    httpgetenabled ce n'est pas seulement pour les binding HTTP uniquement ?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut
    Après de nombreux tests j'ai réussi a décelé l'erreur en detail :

    Dépassement du quota de nombre caractères le maximum nametable (16384) lors de la lecture des données XML. Le nametable est une structure de données utilisée pour stocker des chaînes rencontrées lors du traitement de XML - longs documents XML et noms d'élément non extensible, les noms d'attributs et valeurs d'attribut peuvent déclencher ce quota. Ce quota peut être augmenté en modifiant la propriété MaxNameTableCharCount sur l'objet XmlDictionaryReaderQuotas utilisé lors de la création du lecteur XML.
    Du coup dans mon fichier config de mon server j'ai ajouter ça :

    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
    <bindings>
          <netTcpBinding>
            <binding name="netTcpBindingConfig"
                     maxBufferPoolSize = "524288"
                    maxBufferSize = "2147483647"
                    maxConnections = "10"
                    maxReceivedMessageSize = "2147483647">
              <readerQuotas maxDepth = "2147483647"
                            maxStringContentLength = "2147483647"
                            maxArrayLength = "2147483647"
                            maxBytesPerRead = "2147483647"
                            maxNameTableCharCount = "2147483647"/>
              <security mode="None" />
            </binding>
          </netTcpBinding>
        </bindings>
    J'ai également fait des modifs du coté Client :

    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
    <netTcpBinding>
            <binding name="NetTcpBinding_ICIATControlServices" closeTimeout="00:01:00"
              openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
              transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
              hostNameComparisonMode="StrongWildcard" listenBacklog="10" maxBufferPoolSize="524288"
              maxBufferSize="2147483647" maxConnections="10" maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647"
                maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="None">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                <message clientCredentialType="Windows" />
              </security>
            </binding>
          </netTcpBinding>
    Même en faisant ça le problème persiste. Je commence a être en manque de piste.

  6. #6
    Membre expert
    Avatar de GuruuMeditation
    Homme Profil pro
    .Net Architect
    Inscrit en
    Octobre 2010
    Messages
    1 705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : .Net Architect
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 705
    Points : 3 570
    Points
    3 570
    Par défaut
    Citation Envoyé par labrute Voir le message
    httpgetenabled ce n'est pas seulement pour les binding HTTP uniquement ?
    Non, c'est juste pour dire que les métadonnées sont accessibles via un HTTP GET. Indépendamment du binding du service.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par GuruuMeditation Voir le message
    Non, c'est juste pour dire que les métadonnées sont accessibles via un HTTP GET. Indépendamment du binding du service.
    +1 pour Olivier.

    Sinon je pense mais c'est à confirmer, il ne faut pas oublier qu'en mettant httpGetEnabled à true il te faut impérativement avoir une adresse de base qui utilise le protocole HTTP ou tout simplement renseigner en plus du httpGetEnabled l'attribut httpGetUrl qui devra contenir l'URL d'accès vers les métadonnées.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 81
    Points : 66
    Points
    66
    Par défaut
    J'ai trouvé mon erreur.
    Il fallait mettre le httpGetEnabled a true, sans oublier de mettre une valeur pour httpGetURL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <behaviors>
          <serviceBehaviors>
            <behavior name="MonServiceWCF.Behavior">
              <serviceMetadata  httpGetEnabled="true" httpGetUrl="http://localhost:6010"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par labrute Voir le message
    J'ai trouvé mon erreur.


    Tu as mis 1 mois 18 jours pour la trouver alors que la réponse on (Olivier et moi) te l'avait fournit. Surtout que la solution que tu donnes est bien celle de mon précédent message. M'enfin l'important est que tu t'en es sorti.

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

Discussions similaires

  1. Erreur lors de l'ajout d'une deuxième clef étrangère
    Par mensoif dans le forum Administration
    Réponses: 2
    Dernier message: 15/06/2009, 14h35
  2. [E-07] Erreur lors de l'ajout d'une feuille
    Par aalex_38 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/01/2009, 10h20
  3. Erreur lors de l'ajout dans une table
    Par k_boy dans le forum Bases de données
    Réponses: 14
    Dernier message: 31/03/2008, 15h05
  4. Erreur lors de l'ajout d'une référence web
    Par Pilloutou dans le forum Visual Studio
    Réponses: 2
    Dernier message: 12/02/2007, 15h11
  5. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13

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