2009-05-07 3 views
0

ich ein Anfänger von WCF bin, schreibe ich ein einfaches Beispiel davon, und die app.config Dateien meiner Anwendung wie folgt:Eine Frage, über WCF bei der Verwendung von app.config

Host:

<services> 

    <service name="WCFService.Service.CalculatorService" behaviorConfiguration="calculatorBehavior"> 

    <host> 
     <baseAddresses> 
     <add baseAddress="http://10.1.9.210:8080/GeneralCalculator"/> 
     </baseAddresses> 
    </host> 

    <endpoint address="" binding ="basicHttpBinding" contract="WCFService.Contract.ICalculator"></endpoint> 

    </service> 

</services> 

<behaviors> 

    <serviceBehaviors> 
    <behavior name="calculatorBehavior"> 
     <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> 
    </behavior> 
    </serviceBehaviors>  
</behaviors>  


Auftraggeber:

<client> 

    <endpoint address="http://10.1.9.210:8080/GeneralCalculator/CalculatorService" binding ="basicHttpBinding" contract="WCFService.Contract.ICalculator" /> 

</client> 

Wenn ich meine Anwendung ausführen, ist es eine Ausnahme: „Die Botschaft mit To 'http://10.1.9.210:8080/GeneralCalculator/CalculatorService' kann nicht an den Empfänger verarbeitet werden, aufgrund einer Address Nichtübereinstimmung am EndpointDispatcher. Überprüfen Sie, ob der Sender und Empfänger des EndpointAddresses zustimmen.“

Ich denke, es gibt einige falsch mit meiner Konfigurationsdatei und geben Sie mir bitte einen Hinweis,

Dank :)

+0

Was ist Ihre Konfiguration für den Client? – rguerreiro

Antwort

1

dieses Versuchen Sie stattdessen:

<services> 

    <service name="WCFService.Service.CalculatorService" behaviorConfiguration="calculatorBehavior"> 

    <host> 
     <baseAddresses> 
     <add baseAddress="http://10.1.9.210:8080/GeneralCalculator"/> 
     </baseAddresses> 
    </host> 

    <endpoint address="CalculatorService" binding ="basicHttpBinding" contract="WCFService.Contract.ICalculator"></endpoint> 

    </service> 

</services> 

<behaviors> 

    <serviceBehaviors> 
    <behavior name="calculatorBehavior"> 
     <serviceMetadata httpGetEnabled="true" httpGetUrl=""/> 
    </behavior> 
    </serviceBehaviors> 

</behaviors> 
+0

Das Problem ist gelöst Vielen Dank :) –

+0

Bitte markieren Sie als beantwortet und wählen Sie die richtige Antwort aus allen Antworten. Vielen Dank. – rguerreiro

0

Sieht aus wie der Kunde zu schlagen versucht, ? a. Uri, die in „CalculatorService“ endet, während der Dienst dieses Suffix nicht auf dem Uri hat auf dem Client die Adresse ändern, dass der Service entsprechen

+0

vielen Dank –

1

Ihr Client versucht, eine Verbindung herzustellen:

http://10.1.9.210:8080/GeneralCalculator/CalculatorService 

, während die Server setzt den Dienst an:

http://10.1.9.210:8080/GeneralCalculator 

Diese beiden müssen übereinstimmen! :-)

Sie können entweder die Antwort von Rodrigo verwenden und einen relativen address="CalculatorService" zum Endpunkt Ihres Servers hinzufügen, oder Sie können den Endpunkt des Clients so ändern, dass er auf die URL verweist, die der Server gerade anzeigt.

Marc

+0

vielen Dank –