2010-05-19 5 views
0

J'ai un service WCF sur le serveur B. Ensuite, sur la machine A est le client, qui est un service Windows. Dans une DLL séparée se trouve toute la logique métier pour ce service. Donc, mon proxy pour la WCF est de ce côté. J'ai 2 app.config (côté client seulement): 1 pour le service et un autre dans la DLL. J'ai donc essayé (à des fins de test) de mettre la section de configuration servicemodel dans les deux. Les deux encore, ça ne marche pas, il dit qu'il ne peut pas trouver le point de terminaison avec ce nom et pour ce contrat ...WCF ne trouve pas la configuration du client

Ce que j'essaie de faire ici est de modifier la configuration par programme. Voici le code dans la dll couche d'affaires:

Dim ep As New EndpointAddress(New Uri(ConfigurationManager.AppSettings(nomServeurCible)), _ 
            EndpointIdentity.CreateDnsIdentity(ConfigurationManager.AppSettings("Identity_" & nomServeurCible))) 

    serviceCible = New ServiceProxy.ExecOperClient("wsHttp", ep) 

Et voici un exemple du fichier de configuration:

<add key="TEST1" value="http://TEST1:8000/MySpacePerso/ExecOperService"/> 
<add key="TEST1_CertificateSerialNumber" value="10 hj 6y 7b 00 01 32 12 01 21"/> 
<add key="Identity_TEST1" value="TEST1"/> 

<system.serviceModel> 
<client> 
    <endpoint address="http://SERV_NAME:8000/CSSTQDA/ExecOperService" binding="wsHttpBinding" 
      behaviorConfiguration="myClientBehavior" 
      bindingConfiguration="MybindingCon" contract="ExecOper.Service.IExecOper" 
      name="wsHttp"> 
    <identity> 
     <dns value="SERV_CERT_NAME"/> 
    </identity> 
    </endpoint> 
</client> 
<bindings> 
    <wsHttpBinding> 
    <binding name="MybindingCon"> 
     <security mode="Message"> 
     <message clientCredentialType="UserName" /> 
     </security> 
    </binding> 
    </wsHttpBinding> 
</bindings> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceTraitementBehavior"> 
     <serviceMetadata httpGetEnabled="True"/> 
     <serviceDebug includeExceptionDetailInFaults="True" /> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="myClientBehavior"> 
     <clientCredentials> 
     <serviceCertificate> 
      <authentication certificateValidationMode="ChainTrust" revocationMode="NoCheck"/> 
     </serviceCertificate> 
     </clientCredentials> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 

Répondre

0

Eh bien, il se trouve qu'il était juste une question de ConfigurationName tag dans ma classe proxy ... Désolé :-) Il n'y avait pas l'espace de noms correct pour mon contrat. Le nom complet doit correspondre à celui du fichier app.config.

Questions connexes