WCF не может найти netTcpBinding - PullRequest
       20

WCF не может найти netTcpBinding

1 голос
/ 04 августа 2011

Я пытаюсь создать службу WCF, доступную как через webHttpBinding, так и через netTcpBinding. Мне удалось добиться доступности webHttpBinding через Java-клиент, и сейчас я работаю над попыткой заставить работать netTcpBinding.

Я настроил конфигурацию следующим образом;

<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="httpBehavior">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  <services>
    <service name="MR_Jukebox_Service.JukeboxService">
      <host>
        <baseAddresses>
          <add baseAddress="http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service/"/>
          <add baseAddress="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net/"/>
        </baseAddresses>
      </host>
      <endpoint address=""
                behaviorConfiguration="httpBehavior"
                binding="webHttpBinding"
                contract="MR_Jukebox_Service.IJukeboxService" />
      <endpoint address="mex"
                binding="mexHttpBinding"
                contract="MR_Jukebox_Service.IJukeboxService" />
      <endpoint address="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net"
                binding="netTcpBinding"
                bindingConfiguration=""
                contract="MR_Jukebox_Service.IJukeboxService" />
    </service>
  </services>
</system.serviceModel>

В том же решении у меня есть тестовое приложение, которое я хочу подключить к netTcpBinding, я щелкнул правой кнопкой мыши на «Service References» и выбрал «Add Service Reference ...». Когда я нажимаю «Обнаружить», он находит службу, хотя говорит;

Произошла ошибка при загрузке http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service'. Запрос не выполнен с состоянием HTTP 404: не найдено. Метаданные содержат ссылку, которая не может быть разрешена: 'http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service'. Не было конечной точки прослушивания в http://localhost:8732/Design_Time_Addresses/MR_Jukebox_Service, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Смотрите InnerException, если имеется, для более подробной информации. Удаленный сервер возвратил ошибку: (404) Not Found. Если служба определена в текущем решении, попробуйте создать решение и снова добавить ссылку на службу.

Но я также не могу увидеть netTcpBinding для того, чтобы я смог создать для него ссылку на службу.

Мне было интересно, может ли кто-нибудь увидеть, что я делаю неправильно, потому что это, вероятно, что-то довольно простое, но из-за моего отсутствия опыта работы с WCF не заметил.

Спасибо за любую помощь заранее.

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Попробуйте изменить конечную точку mex на:

<endpoint address="mex"
          binding="mexHttpBinding"
          contract="IMetadataExchange" />

Вы использовали контракт вашего сервиса для конечной точки mex, который, я не думаю, сработает.

Вы можете настроить аналогичный для NetTcpBinding:

<endpoint address="net.tcp://localhost:8523/Design_Time_Addresses/MR_Jukebox_Service/net/mex"
          binding="mexTcpBinding"
          contract="IMetadataExchange" />
2 голосов
/ 04 августа 2011

Мне удалось получить доступ к webHttpBinding через Java-клиент, и сейчас я работаю над тем, чтобы заставить работать netTcpBinding.

Вы пытаетесь заставить netTcpBinding работать с Java-клиентом? Потому что netTcpBinding only работает с клиентом .net.

NetTcpBinding не предназначен для взаимодействия, он предназначен для производительности, когда и сервер, и клиент имеют .net

...