Ошибка "Нет привязки протокола к указанному адресу..."
У меня есть 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 ответа
Когда вы размещаете свои службы 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
Просто для пользы людей, ищущих. Я сталкивался с этой проблемой. Чтобы исправить это, я просмотрел web.config, используя ответ marc_s, затем сделал следующее, так как у меня все еще были проблемы:
- Удалить виртуальный каталог.
- Перешел к свойствам проекта - > Веб-панель - > Выбрал "Использовать локальный веб-сервер IIS" с URL-адресом проекта http://{localhost}/{myservice} (очевидно, без скобок) и заново создал виртуальный каталог.
- Изменен пул приложений на.NET 4 с интегрированным режимом конвейера. Изменение пула приложений, казалось, исправило это.
NB. Если кто-то сталкивается с этой проблемой при просмотре службы WCF в браузере во время разработки с использованием Visual Studio, эта проблема для них.
Я столкнулся с этой проблемой, когда пытался просмотреть свой .svc
сервис из VS после присвоения значения конечной точке address
атрибут в Web.config
файл, но если я не назначу конечную точку address
присвоить значение, тогда он отлично работает.