使用app.config时有关WCF的问题

时间:2009-05-07 08:43:55

标签: wcf app-config

我是WCF的初学者,我写了一个简单的例子,我的应用程序的app.config文件如下:

主机:   

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


客户端:

<client>

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

</client>

当我运行我的应用程序时,有一个例外: “由于EndpointDispatcher上的AddressFilter不匹配,无法在接收方处理带有'http://10.1.9.210:8080/GeneralCalculator/CalculatorService'的消息。检查发送方和接收方的EndpointAddresses是否一致。”

我猜我的配置文件有问题,请给我一些提示,

谢谢:)

3 个答案:

答案 0 :(得分:1)

请改为尝试:

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

答案 1 :(得分:1)

您的客户尝试连接到:

http://10.1.9.210:8080/GeneralCalculator/CalculatorService

,而您的服务器在以下位置公开服务:

http://10.1.9.210:8080/GeneralCalculator

这两个需要匹配! : - )

因此,您可以使用Rodrigo的答案并将相对address="CalculatorService"添加到服务器的端点,或者您可以将客户端的端点更改为指向服务器现在公开的URL。

马克

答案 2 :(得分:0)

看起来客户端正试图点击以“CalculatorService”结尾的Uri,而该服务在Uri上没有这个后缀?更改客户端上的地址以匹配服务的地址。