Я пытаюсь использовать файл конфигурации для определения информации о конечной точке и службах.У меня есть очень простой код, который содержит службу OneWay и службу Duplex.OneWay работал, когда я не пытался изменить файл конфигурации.
Теперь я хочу использовать файл конфигурации для определения обоих сервисов.
Имя контракта Service1 равно IOneWayService
иИмя контракта Service2: ICallBackService
.
Оба реализовали код в своих конкретных именах классов OneWayService.svc.cs
и CallBackService.svc.cs
.
Файл конфигурации на данный момент выглядит так:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true">
<serviceActivations>
<add relativeAddress="OneWayService.svc" service="TestingWcf.OneWayService"/>
<add relativeAddress="CallBackService.svc" service="TestingWcf.CallBackService"/>
</serviceActivations>
</serviceHostingEnvironment>
<services>
<service name="TestingWcf.OneWayService">
<endpoint address="http://localhost:60847/One"
binding="wsHttpBinding"
contract="IOneWayService" />
</service>
<service name="TestingWcf.CallBackService">
<endpoint address="http://localhost:60847/Two"
binding="wsHttpBinding"
contract="IDuplexService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
У меня всегда возникает эта ошибка при попытке выполнить OneWayService через этот URL: http://localhost:60847/OneWayService.svc
Имя контракта 'IOneWayService' не может быть найдено в списке реализованных контрактовслужбой 'OneWayService'.
У кого-нибудь есть идеи, почему?
Редактировать
Я удалил multipleSiteBindingsEnabled= true
из тега servinceHostingEnvironment
и вконтракт добавил пространство имен, и я мог запустить OneWayService.
Кроме того, дуплекс не может быть привязан к wsHttpBinding
.Я должен был изменить его на NetTcpBinding
.Но у меня была другая ошибка с дуплексом:
Расширение привязки конфигурации 'system.serviceModel / bindings / NetTcpBinding' не может быть найдено.Убедитесь, что это расширение привязки правильно зарегистрировано в system.serviceModel / extensions / bindingExtensions и правильно написано.
С этого момента я снова потерялся.
Редактировать 2
Я сделал ошибку в имени привязки.У меня была заглавная буква для NetTcpBinding, и для нее требуется строчная буква: netTcpBinding
.Тем не менее, он все еще не работает, теперь у меня есть:
Протокол 'net.tcp' не поддерживается.>. <!!! </p>