2010-02-05 17 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 endpoint इस तरह दिखता है:

 <endpoint address="" binding="netTcpBinding" 

आप एक पूरा पता निर्दिष्ट नहीं करते हैं -> WCF एक आधार पते net.tcp का उपयोग करने के लिए की तलाश में है - लेकिन कोई नहीं है!

समाधान 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 endpoint net.tcp://localhost:8888/JMSysSplashServer

समाधान 2 पर पहुंचा जा सकता है: अपने जाल में एक पूर्ण पते परिभाषित करते हैं। टीसीपी एंडपॉइंट:

<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> 

जब आप डी ठीक एक अंतबिंदु, आप

  • या तो एक पूरा पता

या (net.tcp और पोर्ट संख्या और सभी के साथ) को परिभाषित:

  • आप एक रिश्तेदार का पता परिभाषित (जैसे address="") लेकिन इस मामले में, आप कि योजना (यहाँ के लिए एक आधार का पता होना चाहिए: net.tcp) - न सिर्फ एक http आधार पते
10

की जांच करें कि ".NET विशेषताएं -> WCF एक्टिवेशन -> गैर -एचटीटीपी सक्रियण "सुविधा स्थापित है (" सर्वर प्रबंधक -> सुविधाओं को जोड़ें/हटाएं ")। और मुझे लगता है कि आप आईआईएस में सेवा की मेजबानी करते हैं। इस मामले में, कृपया यह भी जांचें कि किसी वेब साइट (वेब ​​साइट -> उन्नत सेटिंग्स -> सक्षम प्रोटोकॉल) और "नेट टीसीपी लिस्टनर एडाप्टर" के लिए net.tcp प्रोटोकॉल की अनुमति है या नहीं।

2

आप इस बात का जिक्र नहीं करते कि मेजबान कौन है। यदि आप होस्ट करने के लिए IISExpress का उपयोग कर रहे हैं, तो ध्यान दें कि यह net.tcp का समर्थन नहीं करता है। http://www.iis.net/learn/extensions/introduction-to-iis-express/iis-express-faq से:
प्रश्न: क्या डब्ल्यूसीएफ अनुप्रयोग समर्थित हैं?

ए: हां, आईआईएस एक्सप्रेस डब्ल्यूसीएफ अनुप्रयोगों का समर्थन करता है। जैसा ऊपर बताया गया है, डब्ल्यूसीएफ केवल HTTP या HTTPS पर समर्थित है। एमएसएमक्यू और नेट.tcp पर डब्ल्यूसीएफ समर्थित नहीं है।

1

मुझे पता है कि यह पुराना है और उत्तर दिया गया है, लेकिन मुझे एक अलग संकल्प के साथ एक ही समस्या का सामना करना पड़ा।

हालांकि दानील सही है, याद आ रही है कि इंस्टॉलेशन एक ही त्रुटि को पॉप-अप करने के लिए एक ही त्रुटि का कारण बन जाएगा मेरी समस्या थोड़ा अलग थी और दूसरों के लाभ के लिए यह उत्तर लिखना था।

समस्या # 1 वेबसाइट में आईआईएस में जिसके अंतर्गत आपका एप्लिकेशन रहता है, राइट-क्लिक करें और "बाइंडिंग संपादित करें" पर क्लिक करें।

सुनिश्चित करें कि net.tcp बाध्यकारी जानकारी के साथ बाध्यकारी जानकारी में से एक के रूप में मौजूद है "808: *"।

समस्या # 2 आईआईएस में अपने आवेदन नोड में, अपनी "उन्नत सेटिंग्स" पर जाएं और जांचें कि net.tcp सक्षम प्रोटोकॉल सूची में है या नहीं। जैसे "http, net.tcp" काम करेगा यदि आपको बाद के दोनों प्रोटोकॉल का समर्थन करने की आवश्यकता है।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे