2009-05-25 3 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> 

Hier ist meine WCF configuratio aber wenn ich versuche Service Bezug aufnet.tcp Bindung Metadaten Problem

net.tcp://127.0.0.1:8731/IMSSDirectoryService 

ich einen Fehler hinzuzufügen:

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

Wenn der Dienst definiert ist, Versuchen Sie in der aktuellen Lösung, die Lösung zu erstellen, und fügen Sie die Dienstreferenz erneut hinzu. Bitte hilf mir mein Problem zu verstehen.

+0

Ich denke, das Problem ist in Mex-Bidnings, Server kann Metadaten nicht erhalten .. Kann ich Sicherheit auf keine für Mex einstellen? Ich habe versucht, das zu tun, aber ich bekomme die andere Fehlermeldung ... –

Antwort

2

Sie haben zwei identische Basisadressen definiert:

<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" /> 

, dass die Ursache Ihrer Probleme ist - wenn zu net.tcp://127.0.0.1:8731/ verbindet, WCF nicht weiß, welchen Service Sie bedeuten.

Die Basisadresse muss in seinem "Schema" UNIQUE sein (zB http, net.tcp etc.)

Marc

EDIT: wenn Sie möchten, können Sie Ihre Metadaten abzurufen über den Browser und Navigieren zu einer URL, um sie zu erhalten, müssen Sie die <serviceMetadata httpGetEnabled="True"/> in Ihrem Service-Verhalten Option aktivieren. Andernfalls können Sie Ihre Metadaten nur mit einem SOAP-Aufruf über net.tcp abrufen - z. Verwenden Sie die App "WcfTestClient.exe", die sich in Ihrem Visual Studio 9/Common7/IDE-Ordner befindet.

BEARBEITEN 2: Sie haben eine Reihe von zusätzlichen Bindungen und Verhaltensweisen für MEX definiert, aber da keiner Ihrer mex-Endpunkte tatsächlich auf diese Einstellungen verweist, werden sie nicht verwendet.

+0

Ich änderte den Port von ISURDirectoryService es hilft nicht, bekomme ich die gleiche Fehlermeldung –

+0

Wie versuchen Sie, Ihre Metadaten zu bekommen? Verwenden Sie einen SOAP-Anruf oder versuchen Sie es im Browser? –

+0

Browser kehrt Bett Anfrage, Svcutill Tool generiert Proxy für SUR, aber beim Generieren von MSS bekomme ich Fehler, Die Nachricht mit Aktion 'http://schemas.xmlsoap.org/ws/2 004/09/Transfer/Get' kann nicht sein aufgrund eines ContractFilte R Mismatch am EndpointDispatcher am Empfänger verarbeitet. Dies kann entweder durch einen Vertrag m ismatch (nicht übereinstimmende Aktionen zwischen Sender und Empfänger) oder eine Bindung/Sicherheit m ismatch zwischen dem Absender und dem Empfänger sein. Überprüfen Sie, ob Absender und Empfänger den gleichen Vertrag und die gleiche Bindung (einschließlich der Sicherheitsanforderungen, z. B. Nachricht, Transport, Keine) haben e. –

0

Ich löste das Problem, ich ändere nur mex Bindung für MSS-Service zu http. Vielen Dank marc_s deine Antwort hilf mir das Problem zu verstehen!

+0

Ah, ausgezeichnet - froh, dass Sie das Problem gefunden! –

+0

Ich habe das gleiche Problem. Ich möchte nicht mexhttpBinding verwenden. Ich möchte mexTcpBinding verwenden. Der Referenzdialog zum Hinzufügen von Diensten wirft den im Beitrag angegebenen Fehler auf, irgendwelche Hinweise? –

Verwandte Themen