2009-05-25 5 views
2
<system.serviceModel> 
    <services> 
     <service name="SUR.Core.Service.Implementation.SURDirectoryService" behaviorConfiguration="DefaultServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://127.0.0.1:8731/ISURDirectoryService"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="DefaultDirectoryServiceBindConfig" contract="SUR.Core.Service.Facade.ISURDirectoryService"/> 
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
     </service> 
     <service name="MSS.Core.Service.Implementation.MSSDirectoryService" behaviorConfiguration="DefaultServiceBehavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.tcp://127.0.0.1:8731/IMSSDirectoryService" /> 
      <add baseAddress="http://127.0.0.1:8732/IMSSDirectoryService" /> 
      </baseAddresses> 
     </host> 
     <endpoint address="" binding="netTcpBinding" bindingConfiguration="DefaultDirectoryServiceBindConfig" contract="MSS.Core.Service.Facade.IMSSDirectoryService"/> 
     <endpoint address="Person" binding="basicHttpBinding" bindingConfiguration="StreamedServicesBinding" contract="MSS.Core.Service.Facade.IMSSPersonService"/> 
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange"/> 
     </service> 
    </services> 
    <bindings> 
     <customBinding> 
     <binding name="MetadataExchangeTcpBinding"> 
      <tcpTransport portSharingEnabled="True" /> 
     </binding> 
     </customBinding> 
     <netTcpBinding> 
     <binding name="DefaultDirectoryServiceBindConfig" maxReceivedMessageSize="1048576" 
      closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:05:00"> 
      <security mode="None"></security> 
     </binding> 
     <binding name="mexBinding" portSharingEnabled="true"> 
      <security mode="None"/> 
     </binding> 
     </netTcpBinding> 
     <basicHttpBinding> 
     <binding name="StreamedServicesBinding" transferMode="StreamedResponse" maxReceivedMessageSize="10067108864" 
       closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:05:00" maxBufferSize="500" > 
      <security mode="None"></security> 
     </binding> 
     </basicHttpBinding> 
    </bindings> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="DefaultServiceBehavior"> 
      <serviceMetadata /> 
      <dataContractSerializer maxItemsInObjectGraph="6553600" /> 
      <!-- To avoid disclosing metadata information, 
      set the value below to false and remove the metadata endpoint above before deployment --> 
      <!--<serviceMetadata httpGetEnabled="True"/>--> 
      <serviceThrottling maxConcurrentCalls="30" maxConcurrentSessions="30" maxConcurrentInstances="30"/> 
      <!-- 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> 
    </behaviors> 
    </system.serviceModel> 

Voici mon WCF configuratio mais lorsque je tente d'ajouter une référence de service ànet.tcp problème de métadonnées de liaison

net.tcp://127.0.0.1:8731/IMSSDirectoryService 

je reçois une erreur:

Metadata contains a reference that cannot be resolved: 'net.tcp://localhost:8731/IMSSDirectoryService'.

Si le service est défini Dans la solution actuelle, essayez de créer la solution et d'ajouter à nouveau la référence de service. S'il vous plaît aidez-moi à comprendre mon problème.

+0

Je pense que le problème est dans bidnings Mex, le serveur ne peut pas obtenir des métadonnées .. Peut-être que je devrais définir la sécurité sans pareil pour MEX? J'ai essayé de le faire mais je reçois l'autre message d'erreur ... –

Répondre

2

Vous avez deux adresses de base identiques définies:

<service name="SUR.Core.Service.Implementation.SURDirectoryService" 
     behaviorConfiguration="DefaultServiceBehavior"> 
    <host> 
    <baseAddresses> 
     <add baseAddress="net.tcp://127.0.0.1:8731/ISURDirectoryService"/> 
    </baseAddresses> 


<service name="MSS.Core.Service.Implementation.MSSDirectoryService" 
     behaviorConfiguration="DefaultServiceBehavior"> 
    <host> 
    <baseAddresses> 
     <add baseAddress="net.tcp://127.0.0.1:8731/IMSSDirectoryService" /> 

C'est la cause de vos problèmes - lors de la connexion à net.tcp://127.0.0.1:8731/, WCF ne sait pas quel service que vous voulez dire.

L'adresse de base doit être unique dans son "schéma" (par exemple http, net.tcp etc.)

Marc

EDIT: si vous voulez être en mesure de récupérer vos métadonnées en utilisant le navigateur et Si vous naviguez jusqu'à une URL pour l'obtenir, vous devez activer l'option <serviceMetadata httpGetEnabled="True"/> dans votre comportement de service. Sinon, vous ne pourrez accéder à vos métadonnées qu'en utilisant un appel SOAP sur net.tcp - par exemple. en utilisant l'application "WcfTestClient.exe" qui se trouve dans votre dossier Visual Studio 9/Common7/IDE.

EDIT 2: vous avez défini un certain nombre de liaisons et de comportements supplémentaires pour MEX, mais comme aucun de vos points de terminaison mex ne fait réellement référence à ces paramètres, ils ne sont pas utilisés.

+0

J'ai changé le port de ISURDirectoryService il ne permet pas, je reçois le même message d'erreur –

+0

Comment essayez-vous d'obtenir vos métadonnées? Utiliser un appel SOAP, ou essayez-vous dans le navigateur? –

+0

navigateur retourne la demande de lit, outil svcutill génère proxy pour générer SUR mais MSS j'obtiens l'erreur, Le message avec action 'http://schemas.xmlsoap.org/ws/2 004/09/transfert/Get' ne peut pas être traité au niveau du récepteur, en raison d'une non concordance de ContractFilte sur le EndpointDispatcher. Cela peut être à cause d'un contrat m ismatch (Actions entre dépareillées émetteur et le récepteur) ou une liaison/sécurité m ismatch entre l'émetteur et le récepteur. Vérifiez que l'expéditeur et le destinataire ont le même contrat et la même liaison (y compris les exigences de sécurité, par exemple Message, Transport, Aucune). –

0

Je résolu le problème, je viens de changer de liaison pour le service MEX MSS à http. merci beaucoup marc_s votre réponse aidez-moi à comprendre le problème!

+0

Ah, excellent - heureux que vous ayez trouvé le problème! –

+0

J'ai le même problème. Je ne veux pas utiliser mexhttpBinding. Je voudrais utiliser mexTcpBinding. La boîte de dialogue Ajouter un service renvoie l'erreur indiquée dans le message, des indices? –

Questions connexes