2012-05-24 2 views
1

Я пытаюсь заставить мою службу WCF работать с netTcpBinding вместо wsHttpBinding, но я не могу заставить ее работать.IIS 7.5/WCF - нет.tcp статус неизвестен

Я добавил привязку net.tcp к IIS7.5, но статус Неизвестный (и когда я также удаляю привязку http, он ставит большой красный X через сайт, и мне нужно добавить новую привязку http, прежде чем я смогу получить доступ любые настройки снова). Я уже смотрел здесь и в Google, но я мог найти только две или три сообщения об этой проблеме без каких-либо реальных решений.

Что у меня есть:

  • WAS служба работает, а также услуги Net *..
  • Добавлен net.tcp в дополнительных настройках в IIS.
  • WCF не-http установлен.

Там, кажется, TCP слушатель работает, так как он показывает в NetStat, что он прослушивает мой указанный порт: 809), и я также получил брандмауэр сообщение (также попытался отключить брандмауэр/антивирус, но Бесполезный 't help).

WCF Тестовые результаты клиента в этой ошибки:

Error: Cannot obtain Metadata from net.tcp://localhost:809/MyService.svc

Мой Web.config (копируемый в основном из MSDN, для правильного расположения смотрите здесь http://pastebin.com/Ru8p0T9N):

<services> 
    <service behaviorConfiguration="MyBehavior" name="WCFService.MyService"> 
    <endpoint address="" binding="netTcpBinding" bindingConfiguration="Binding1" name="MyServiceEndpoint" contract="WCFService.MyService"> 
     <identity> 
     <dns value="localhost" /> 
     </identity> 
    </endpoint> 
    <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration="" name="MyServiceMexTcpBidingEndpoint" contract="IMetadataExchange" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="net.tcp://localhost:809/MyService.svc" /> 
     </baseAddresses> 
    </host> 
    </service> 
</services> 
<behavior name="MyBehavior"> 
    <serviceMetadata httpGetEnabled="false" /> 
    <serviceDebug includeExceptionDetailInFaults="true" /> 
</behavior> 
<netTcpBinding> 
    <binding name="Binding1"hostNameComparisonMode="StrongWildcard"sendTimeout="00:10:00"maxReceivedMessageSize="65536"transferMode="Buffered"portSharingEnabled="true"> 
    <security mode="Message"> 
     <transport clientCredentialType="None" /> 
     <message clientCredentialType="None" /> 
    </security> 
    </binding> 
</netTcpBinding> 

Все отлично работает с wsHttpBinding но не с net.tcp. Я попробовал несколько разных настроек в Web.config из нескольких источников, но я все время сталкиваюсь с той же проблемой.

+0

Вы проверили все изломы в следующей статье: http: //www.codegain.com/articles/wcf/howto/hosting-wcf-service-with-nettcpbinding-on-iis7.aspx – AvkashChauhan

+0

Спасибо за ссылку , Я положил пул приложений в классическом режиме (раньше этого не было), но по-прежнему та же ошибка. –

ответ

0

Для людей, имеющих одинаковую проблему: как я уже говорил, я сменил пул приложений на классический, и он не работал (http тоже не работал больше), но когда я сменил его обратно и переработал пул приложений, он внезапно сработал.

1

Вы добавили net.tcp в качестве включенного протокола в IIS? Управлять веб-сайтом => расширенные настройки => разрешенные протоколы (с разделителями-запятыми)

+0

Да, я сделал (см. Также первый пост);) У меня это как http, net.tcp, как описано в MSDN. –