2010-02-05 3 views
6

내 WCFservice 나에게주고 지원되지 않습니다 " 'net.tcp'가 지원되지 않는 프로토콜"...프로토콜 'net.tcp가'

<system.serviceModel> 
     <bindings> 
     <netTcpBinding> 
     <binding name="tcpBinding" transferMode="Streamed" portSharingEnabled="false"> 
      <reliableSession enabled="true" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" protectionLevel="None" /> 
      <message clientCredentialType="None" /> 
      </security> 
     </binding> 
     </netTcpBinding> 
    </bindings> 
     <services> 
      <service name="JMSysSplash.CommunicationServer.JMSysSplashServer" behaviorConfiguration="Service1Behavior"> 
       <endpoint address="" binding="wsHttpBinding" contract="JMSysSplash.CommunicationClient.IJMSysSplashServer"> 
        <identity> 
         <dns value="localhost"/> 
        </identity> 
       </endpoint> 
       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
     <endpoint address="net.tcp://localhost:8888/JMSysSplashServer" binding="netTcpBinding" bindingConfiguration="tcpBinding" contract="JMSysSplash.CommunicationClient.IJMSysSplashServer"/> 
       <host> 
        <baseAddresses> 
         <add baseAddress="http://localhost:8731/JMSysSplashServer.svc/"/> 
      <add baseAddress="net.tcp://localhost:8888/JMSysSplashServer"/> 
      </baseAddresses> 
       </host> 
      </service> 
     </services>  
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="Service1Behavior"> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="true"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 

답변

0

당신은 nettcp에 대한 기본 주소를 누락 - 끝점에서 전체 netTCP 주소를 정의해야합니다. > WCF는 기본 주소 net.tcp 사용하기위한를 찾고 있습니다 - -

당신은 전체 주소를 지정하지
 <endpoint address="" binding="netTcpBinding" 

하지만 아무도 없다 : 현재 netTcp 엔드 포인트는 다음과 같습니다!

해결 방법 1 : netTcp에 대한 baseAddress을 추가

<services> 
    <service name="JMSysSplash.CommunicationServer.JMSysSplashServer" behaviorConfiguration="Service1Behavior"> 
     ..... 
     <host> 
      <baseAddresses> 
       <add baseAddress="http://localhost:8731/JMSysSplashServer.svc/"/> 
       <add baseAddress="net.tcp://localhost:8888/JMSysSplashServer"/> 
      </baseAddresses> 
     </host> 
    </service> 
</services> 

이제 net.tcp 엔드 포인트가 net.tcp://localhost:8888/JMSysSplashServer

해결 방법 2에 도달 할 수는 : 그물에 전체 주소를 정의합니다. Tcp 종단점 :

<services> 
    <service name="JMSysSplash.CommunicationServer.JMSysSplashServer" 
      behaviorConfiguration="Service1Behavior"> 
     <endpoint address="" binding="wsHttpBinding" 
        contract="JMSysSplash.CommunicationClient.IJMSysSplashServer"> 
      <identity> 
       <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="mexHttpBinding" 
        contract="IMetadataExchange"/> 
     <endpoint 
      address="net.tcp://localhost:8888/JMSysSplashServer" 
      binding="netTcpBinding" bindingConfiguration="tcpBinding" 
      contract="JMSysSplash.CommunicationClient.IJMSysSplashServer"/> 
     ....... 
    </service> 
</services> 

미세 엔드 포인트, 당신은

  • 중 하나

OR (net.tcp와 포트 번호를 모두 포함) 전체 주소을 정의

  • 당신이 상대 주소를 정의 (예를 들어, address="")하지만이 경우, 당신은 여기에 제도 (대한 기본 주소가 있어야합니다 net.tcp를) -뿐 아니라 HTTP 기본 주소
10

확인하시기 바랍니다 .NET 기능 "이 -> WCF 활성화 -> 비 -HTTP 활성화 "기능이 설치되어 있습니다 ("서버 관리자 -> 기능 추가/제거 "). IIS에서 서비스를 호스팅한다고 가정합니다. 이 경우 net.tcp 프로토콜이 웹 사이트 (웹 사이트 -> 고급 설정 -> 사용 프로토콜)에 허용되고 "Net.Tcp Listner Adapter"Windows 서비스가 실행되고 있는지도 확인하십시오.

2

당신은 누가 호스트인지는 언급하지 않았습니다. 호스트에 IISExpress를 사용하는 경우 net.tcp를 지원하지 않습니다. http://www.iis.net/learn/extensions/introduction-to-iis-express/iis-express-faq :
Q : WCF 응용 프로그램이 지원됩니까?

A : 예, IIS Express는 WCF 응용 프로그램을 지원합니다. 위에서 언급 한 것처럼 WCF는 HTTP 또는 HTTPS에서만 지원됩니다. MSMQ 및 net.tcp를 통한 WCF는 지원되지 않습니다.

1

나는 이것이 오래되었다는 것을 알고있다. 그러나 나는 다른 해결책으로 비슷한 문제에 직면했다.

Daniil이 맞지만, 설치가 누락되면 내 문제가 팝업으로 표시되는 것과 약간 다른 문제가 발생하고 다른 사람에게도 도움이됩니다.

문제 # 1 응용 프로그램이있는 웹 사이트의 IIS에서 마우스 오른쪽 단추를 클릭하고 "바인딩 편집"을 클릭하십시오.

net.tcp가 바인딩 정보가 "808 : *"으로 설정된 바인딩 중 하나로 존재하는지 확인하십시오.

문제 # 2 IIS의 응용 프로그램 노드에서 "고급 설정"으로 이동하여 net.tcp가 사용 가능한 프로토콜 목록에 있는지 확인하십시오. 예 : 후자의 프로토콜을 모두 지원해야하는 경우 "http, net.tcp"가 작동합니다.

희망이 도움이됩니다.