Я больше недели безуспешно пытался разместить очень простой HelloWorld-подобный wcf-сервис, используя netTcpBinding.
С http все нормально. Я могу получить доступ к своему сервису даже с удаленной машины. Но с tcp возникают проблемы.
Я выполнил все шаги, которые я должен, чтобы разместить свой сервис в WAS:
Включены функции .Net 3.0, включая активацию http и не-http
Я предоставил «Сетевая служба» и «IIS_IUSRS» следующие разрешения для папки, содержащей сайт:
- Чтение и выполнение
- Список содержимого папки
- Read
Открыты порты 8100 и 8086 в брандмауэре.
В IIS Manager / Actions / Bindings устанавливаются следующие привязки:
- http 8100: *
- net.tcp 8086: *
В IIS Manager / Управление веб-сайтом / Расширенные настройки включены протоколы http и net.tcp.
Первоначальная проблема, с которой я столкнулся, заключалась в том, что я смог получить доступ к службе через http, но при попытке с помощью tcp я получил следующую ошибку:
"Сообщение не может быть отправлено, поскольку адрес службы в адресах конечных точек net.tcp: //myDomain/HelloWorld.Hello.svc 'недоступен для адреса протокола. "
Я нашел сообщение на этом сайте, у автора которого была такая же проблема, и она была решена путем переустановки функций .net 3.0. Я попробовал это. Я также попытался переустановить IIS 7.0 на всякий случай.
Сейчас ситуация хуже, чем была в начале. Если я настраиваю конечную точку с помощью tcpBinding в моем Web.Config, я даже не могу получить доступ к своему сервису по его http адресу с помощью IE !! Я получаю следующее сообщение:
Не удалось найти базовый адрес, который соответствует схеме net.tcp для конечной точки с привязкой NetTcpBinding. Схемы зарегистрированных базовых адресов: [http].
Файл Web.Config выглядит следующим образом:
name="HelloWorld.Hello">
<host>
<baseAddresses>
<add baseAddress="http://myDomain:8100/HelloWorld/" />
<add baseAddress="net.tcp://myDomain:8086/HelloWorld/" />
</baseAddresses>
</host>
<endpoint address=""
binding="wsHttpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="httpInseguro">
</endpoint>
<endpoint address=""
binding="netTcpBinding"
contract="HelloWorld.IHello"
bindingConfiguration="netTcpInseguro">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name ="httpInseguro">
<security mode ="None" />
</binding>
</wsHttpBinding>
<netTcpBinding>
<binding name ="netTcpInseguro">
<security mode ="None" />
</binding>
</netTcpBinding>
</bindings>
и файл .svc выглядит так:
Может ли кто-нибудь дать мне подсказку о том, что происходит? Я действительно не знаю, что еще делать. Это настоящая проблема, потому что использование http-привязки не вариант.
Заранее спасибо.