Вопрос о WCF при использовании app.config - PullRequest
0 голосов
/ 07 мая 2009

Я новичок в 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>

Когда я запускаю свое приложение, возникает исключение: «Сообщение с To 'http://10.1.9.210:8080/GeneralCalculator/CalculatorService' не может быть обработано в получателе из-за несоответствия AddressFilter в EndpointDispatcher. Проверьте, совпадают ли конечные адреса отправителя и получателя.

Думаю, что-то не так с моим файлом конфигурации, и, пожалуйста, дайте мне подсказку,

спасибо:)

Ответы [ 3 ]

1 голос
/ 07 мая 2009

Попробуйте вместо этого:

<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 голос
/ 07 мая 2009

Ваш клиент пытается подключиться к:

http://10.1.9.210:8080/GeneralCalculator/CalculatorService

пока ваш сервер предоставляет сервис по адресу:

http://10.1.9.210:8080/GeneralCalculator

Эти два должны совпадать! : -)

Таким образом, вы можете либо использовать ответ Родриго и добавить относительную address="CalculatorService" к конечной точке вашего сервера, либо вы можете изменить конечную точку клиента так, чтобы она указывала на тот же URL-адрес, который сервер предоставляет прямо сейчас.

Марк

0 голосов
/ 07 мая 2009

Похоже, клиент пытается получить Uri, который заканчивается на "CalculatorService", тогда как у службы нет этого суффикса на Uri? Измените адрес на клиенте в соответствии с адресом службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...