Я пытаюсь разместить службу WCF с привязкой net.tcp на сайте IIS 7.5 в 64-разрядной версии Windows 7. К сожалению, услуга недоступна. Фактически, открытие соединения с TCP-портом с помощью telnet даже не удается.
Вот как выглядит мой раздел system.serviceModel файла web.config для сайта:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultServiceBehavior">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
<dataContractSerializer maxItemsInObjectGraph="2000000" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="DefaultServiceBehavior"
name="FooService">
<endpoint binding="netTcpBinding" bindingConfiguration="service"
name="service" contract="IFoo" />
<endpoint binding="mexTcpBinding"
bindingConfiguration="DuplexBinding" contract="IFoo" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://127.0.0.1:9000/service"/>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="service" portSharingEnabled="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192"
maxArrayLength="16384" maxBytesPerRead="4096"
maxNameTableCharCount="16384" />
<security mode="None"/>
</binding>
<binding name="DuplexBinding">
<reliableSession enabled="true"/>
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
</system.serviceModel>
В диспетчере IIS я создал сайт с пулом приложений, работающим под идентификатором NETWORK SERVICE, с .NET Framework v4.0 и интегрированным конвейером. Существует одна привязка для сайта с типом net.tcp
и «Информация привязки», установленная на 9000:*
.
Под службами моего компьютера я запустил ранее остановленные службы «Net.Tcp Listener Adapter» и «Net.Tcp Port Sharing Service» и заставил их запускаться автоматически. Я также удостоверился, что была установлена «Активация Windows Communication Foundation без HTTP».
Что еще мне нужно сделать, чтобы IIS / WCF / WAS / все, что угодно, прослушивал порт 9000, чтобы моя служба могла быть активирована и вызвана?
Мой вопрос похож на Разместите службу WCF с привязкой net.tcp через IIS Manager 7.5, но OP не был зарегистрирован, и на его вопрос не было дано ответа. Я открываю этот вопрос, чтобы опубликовать свои собственные данные.
Обновить
Я нашел несколько дополнительных подсказок. Я решил добавить вторую привязку, чтобы я мог работать с привязками HTTP, пытаясь выяснить проблемы net.tcp. Теперь, когда я пытаюсь получить доступ к конечной точке HTTP, я получаю эту ошибку
Не удалось найти базовый адрес, соответствующий схеме net.tcp для конечной точки с привязкой NetTcpBinding. Зарегистрированные схемы базовых адресов: [http]
У меня явно есть привязки как для HTTP, так и для net.tcp:
<baseAddresses>
<add baseAddress="net.tcp://localhost:9000/"/>
<add baseAddress="http://localhost:8050/"/>
</baseAddresses>
Так что фраза «Зарегистрированные схемы базовых адресов» меня обеспокоила; Есть ли что-то еще, что я должен сделать, чтобы мой сайт поддерживал схему net.tcp?
net.tcp://127.0.0.1:9000/service
и другие варианты, но полагаю, что если я даже не могу установить соединение с портом 9000, моя проблема не в URL-адресе. - person Jacob   schedule 11.11.2011