WCF .svc работал, но не файл конфигурации - PullRequest
2 голосов
/ 23 мая 2011

Я пытаюсь использовать файл конфигурации для определения информации о конечной точке и службах.У меня есть очень простой код, который содержит службу 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>

1 Ответ

1 голос
/ 23 мая 2011

ОК, это объясняет - Visual Studio по умолчанию использует встроенный веб-сервер Cassini (если вы уже не переключились на использование IIS Express ) - и этот сервер не поддерживает ничего, кроме простого HTTP.

Кассини не поддерживает net.tcp и все такое.

Вам нужно будет начать использовать отдельный виртуальный каталог IIS и сначала включить все необходимые вспомогательные средства (в диалоговом окне Добавить / удалить компоненты Windows)

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