ошибка "Нет привязки протокола к указанному адресу ..." - PullRequest
7 голосов
/ 24 ноября 2010

У меня есть 2 службы WCF, размещенные на сервере IIS.

Вот web.config

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="HttpBinding" />
      </basicHttpBinding>
    </bindings>
    <services>
      <service name="BShop.Services.BubensService">
        <endpoint address="http://localhost:9001/BubensService" binding="basicHttpBinding"
          bindingConfiguration="HttpBinding" name="" contract="BShop.Services.IBubensService" />
      </service>
      <service name="BShop.Services.OrdersService">
        <endpoint address="http://localhost:9001/OrdersService" binding="basicHttpBinding"
          bindingConfiguration="HttpBinding" contract="BShop.Services.IOrdersService" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>
</configuration>

Когда я пытаюсь запустить его, я получаю

Никакая привязка протокола не соответствует данному адресу 'http://localhost:9001/BubensService'. Настроены привязки протокола на уровне сайта в конфигурации IIS или WAS.

Что я пропустил в конфигурации?

Ответы [ 2 ]

23 голосов
/ 24 ноября 2010

Когда вы размещаете свои службы WCF в IIS, ваш адрес, определенный в конечных точках службы, не тот, который вам нужно использовать.

<endpoint 
      // this is **NOT** the address you can use to call your service! 
      address="http://localhost:9001/BubensService"

Скорее, веб-сервер, его порт (обычно 80) и виртуальный каталог плюс файл SVC определяют адрес вашей службы. Таким образом, ваши служебные адреса здесь будут:

http://YourServer/YourVirtualDirectory/YourServiceFile.svc/

Что вы можете сделать, это определить относительные адреса, например:

<service name="BShop.Services.BubensService">
   <endpoint name="" 
             address="BubensService" 
             binding="basicHttpBinding" bindingConfiguration="HttpBinding"  
             contract="BShop.Services.IBubensService" />
</service>

Тогда эта служба будет вызываться по адресу:

http://YourServer/YourVirtualDirectory/YourServiceFile.svc/BubensService
0 голосов
/ 13 ноября 2012

Только для людей, которые ищут. Я сталкивался с этой проблемой. Чтобы исправить это, я просмотрел файл web.config, используя ответ marc_s , затем сделал следующее, поскольку у меня все еще были проблемы:

  1. Удалить виртуальный каталог.
  2. Перешел к свойствам проекта -> Веб-панель -> Выбрано «Использовать локальный веб-сервер IIS» с URL-адресом проекта http://{localhost}/{myservice} (очевидно, без скобок) и заново создал виртуальный каталог.
  3. Изменен пул приложений на .NET 4 с интегрированным режимом конвейера. Изменение пула приложений, похоже, исправило это.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...