2009-06-22 7 views
17

J'utilise VSTS 2008 + C# + .Net 3.0. J'utilise le WCF auto-hébergé. Lors de l'exécution de l'instruction suivante, il y a l'erreur de liaison non trouvée suivante. J'ai posté tout mon fichier app.config, des idées ce qui ne va pas?Erreur de liaison WCF introuvable?

ServiceHost host = new ServiceHost(typeof(MyWCFService)); 

message d'erreur,

Configuration binding extension 'system.serviceModel/bindings/MyBinding' could not be found. Verify that this binding extension is properly registered in system.serviceModel/extensions/bindingExtensions and that it is spelled correctly. 

pleine app.config,

<?xml version="1.0"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="MyBinding" 
      closeTimeout="00:00:10" 
      openTimeout="00:00:20" 
      receiveTimeout="00:00:30" 
      sendTimeout="00:00:40" 
      bypassProxyOnLocal="false" 
      transactionFlow="false" 
      hostNameComparisonMode="WeakWildcard" 
      maxReceivedMessageSize="100000000" 
      messageEncoding="Mtom" 
      proxyAddress="http://foo/bar" 
      textEncoding="utf-16" 
      useDefaultWebProxy="false"> 
      <reliableSession ordered="false" 
       inactivityTimeout="00:02:00" 
       enabled="true" /> 
      <security mode="Transport"> 
      <transport clientCredentialType="Digest" 
       proxyCredentialType="None" 
       realm="someRealm" /> 
      </security> 
     </binding> 
     </wsHttpBinding> 
    </bindings> 
    <services> 
     <service name="MyWCFService" 
       behaviorConfiguration="mexServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:9090/MyService"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="MyBinding" contract="IMyService"/> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="mexServiceBehavior"> 
      <serviceMetadata httpGetEnabled="True"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration> 

merci à l'avance, George

Répondre

23

Vous avez mal compris comment configurer les liaisons - votre fixation dans le point de terminaison doit être un protocole connu;

<endpoint address="" binding="wsHttpBinding" contract="IMyService"/> 

Une fois que vous avez que vous pouvez spécifier la configuration de liaison que vous avez défini dans les paramètres de ce protocole en utilisant l'élément bindingConfiguration ainsi

<endpoint address="" binding="wsHttpBinding" 
    bindingConfiguration="MyBinding" contract="IMyService"/> 
+1

+1 Eh oui, c'est la cause - la façon dont George2 est l'utilisation de "MyBinding" est comme s'il y avait une liaison complète (pas seulement une configuration de liaison) par ce nom. –

+0

Cool! Résolu! Mais j'ai rencontré un nouveau problème lors de l'application de vos commentaires et le nouveau problème concerne le problème de liaison mex. J'ai posté ici, une idée de ce qui ne va pas? http://stackoverflow.com/questions/1026149/mex-binding-error-in-wcf – George2

+0

Merci marc_s! // blush Ma faute pour bien comprendre la technologie. J'ai posté un problème concernant mex (comme un nouveau problème, je commence un nouveau fil pour être clair) ici, apprécie si vous pouviez jeter un oeil, http://stackoverflow.com/questions/1026149/mex-binding -error-in-wcf – George2