2008-12-12 4 views
41

मैं https://mywebsite/MyApp/Myservice.svc में जाकर निम्नलिखित त्रुटि मिलती है" आधार पते कि योजना https मिलान नहीं ढूंढ सके " सेवा '/MyApp/MyService.svc' को संकलन के दौरान अपवाद के कारण सक्रिय नहीं किया जा सकता है। अपवाद संदेश यह है: आधारभूत पता नहीं मिल सका जो मूलभूत स्थिति को बाइंडिंग बेसिकहट्प बाइंडिंग के साथ एंडपॉइंट के लिए मिलान करता है। पंजीकृत बेस एड्रेस स्कीम [http ] .. "https:</p> <p>(लिंक अगर मैं http का उपयोग काम करता है:: //)</p> <p>"

संपादित करें: तो अगर मैं बदल address=""address="https:// ..." को तो मैं बजाय यह त्रुटि प्राप्त:

"त्रुटि: प्रोटोकॉल 'https' समर्थित नहीं है ..... ChannelDispatcher 'https://.../Annotation.svc' पर अनुबंध (रों) के साथ '" एनोटेशन "'अपने आईसीएचनल लिस्टनर को खोलने में असमर्थ है। "

यहाँ क्या मेरी Web.Config लग रहा है की तरह है:।

<services> 
     <service behaviorConfiguration="AnnotationWCF.AnnotationBehavior" 
       name="AnnotationWCF.Annotation"> 
       <endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_Annotation" 
         contract="AnnotationWCF.Annotation" /> 
       <endpoint address="" 
        binding="basicHttpBinding" bindingConfiguration="SecureTransport" 
        contract="AnnotationWCF.Annotation" /> 
       <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
     </service> 

<bindings> 
<basicHttpBinding> 
    <binding name="BasicHttpBinding_Annotation" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
      maxNameTableCharCount="2147483647" /> 
    </binding> 
    <binding name="SecureTransport" maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"/> 
     </security> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
      maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
      maxNameTableCharCount="2147483647" /> 
    </binding> 
</basicHttpBinding> 

उत्तर

20

यह पता चला कि मेरी समस्या यह है कि मैं एक लोड संतुलन उपयोग कर रहा था एसएसएल, जो तब वास्तविक सर्वर है, जो तब शिकायत की http पर भेजा संभालने के लिए किया गया था। एक फिक्स की

विवरण यहाँ है: http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/

संपादित करें: मैं, मेरी समस्या है, जो थोड़ा अलग था तय Microsoft समर्थन से बात कर के बाद।

मेरे चांदी की रोशनी के पास लोड बैलेंसर में https पर जाने वाले कोड में इसका एंडपॉइंट पता था। लोड बैलेंसर ने एंडपॉइंट एड्रेस को http में बदल दिया और उस वास्तविक सर्वर को इंगित करने के लिए जो यह जा रहा था। इसलिए प्रत्येक सर्वर के वेब config पर मैं अंत बिंदु जो https

<endpoint address="" listenUri="http://[LOAD_BALANCER_ADDRESS]" ... /> 
+2

लिंक -> http://blog.hackedbrain.com/archive/2006/09/26/5281.aspx काम नहीं कर रहा है। – Lamps

+1

लिंक का उपयोग करें-> http://blog.hackedbrain.com/2006/09/26/how-to-ssl-passthrough-with-wcf-or-transportwithmessagecredential-over-plain-http/ – meetjaydeep

3

मुझे लगता है कि आप निम्नलिखित config करने के लिए एक समान तरीके से अपनी सेवा को कॉन्फ़िगर करने के लिए कोशिश कर रहे हैं वहाँ अधिक जानकारी यहाँ है : Specify a Service with Two Endpoints Using Different Binding Values। इसके अलावा, विकास के अलावा, संभवत: एक ही सेवा के लिए HTTP & HTTPS अंतराल दोनों होने का अच्छा विचार नहीं है। यह एचटीटीपीएस के उद्देश्य को हरा देता है। उम्मीद है कि वह LPS!

<service type="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"> 
    <endpoint 
     address="http://computer:8080/Hello" 
     contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" 
     binding="basicHttpBinding" 
     bindingConfiguration="shortTimeout" 
    </endpoint> 
    <endpoint 
     address="http://computer:8080/Hello" 
     contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" 
     binding="basicHttpBinding" 
     bindingConfiguration="Secure" 
    </endpoint> 
</service> 
<bindings> 
    <basicHttpBinding 
     name="shortTimeout" 
     timeout="00:00:00:01" 
    /> 
    <basicHttpBinding 
     name="Secure"> 
     <Security mode="Transport" /> 
    </basicHttpBinding> 
</bindings> 
+2

जो एमएसडीएन में एक टाइपो की तरह दिखती है। सुरक्षा मोड = "परिवहन" के बाद दूसरा मूल एचटीपी बाइंडिंग बंद नहीं होना चाहिए? यह भी दिलचस्प है कि सुरक्षित पता http से शुरू होता है, https नहीं। –

8

यकीन है कि एसएसएल करें कि आपके सर्वर के लिए सक्षम किया गया है के बजाय http था के लिए एक listenUri जोड़ा गया!

मुझे अपने स्थानीय बॉक्स पर एक HTTPS कॉन्फ़िगरेशन फ़ाइल का उपयोग करने का प्रयास करते समय यह त्रुटि मिली, जिसमें प्रमाणपत्र नहीं है। मैं स्थानीय परीक्षण करने की कोशिश कर रहा था - कुछ बाइंडिंग को HTTPS से HTTP में परिवर्तित करके। मैंने सोचा कि स्थानीय परीक्षण के लिए स्वयं हस्ताक्षरित प्रमाणपत्र स्थापित करने की कोशिश करने से ऐसा करना आसान होगा।

बाहर निकला मुझे यह त्रुटि मिल रही थी क्योंकि मेरे पास स्थानीय आईआईएस पर एसएसएल सक्षम नहीं था, भले ही मैं वास्तव में इसका उपयोग करने का इरादा नहीं रख रहा था।

HTTPS के लिए कॉन्फ़िगरेशन में कुछ था।आईआईएस 7 में स्वयं हस्ताक्षरित प्रमाण बनाने के लिए HTTP को तब काम करने की इजाजत दी गई :-)

+2

मैंने पाया कि यह पर्याप्त था यह सुनिश्चित करने के लिए कि आईआईएस (6.0) पोर्ट 443 पर सुन रहा था (डिफ़ॉल्ट वेब साइट, गुण, एसएसएल पोर्ट, पुनरारंभ करें राइट-क्लिक करें)। मैं प्रमाण पत्र बनाने तक नहीं गया था। –

+1

मुझे उपरोक्त टिप्पणी @ rory-macleod से बहुत उपयोगी पाया गया। स्थानीय रूप से चलते समय, विजुअल स्टूडियो के भीतर प्रोजेक्ट पर राइट-क्लिक करके और फिर प्रोजेक्ट प्रॉपर्टी पैनल के भीतर "एसएसएल सक्षम" को "सत्य" पर सेट करके एसएसएल को सक्षम करना सुनिश्चित करें। फिर, आपको स्व-हस्ताक्षरित प्रमाणपत्र स्थापित करने के लिए कहा जाएगा। – Jeff

+0

@ जेफ धन्यवाद कि यह था! मैं इसे कुछ दिनों के लिए काम करने की कोशिश कर रहा था – symbiont

25

मुझे यह वही समस्या थी। मेरा समाधान बाध्यकारी मूल्य में "एस" जोड़ने के अलावा था।

ओल्ड: बाध्यकारी = "mexHttpBinding"

नई: बाध्यकारी = "mexHttpsBinding"

web.config टुकड़ा: अपने आधार पर

<services> 
    <service behaviorConfiguration="ServiceBehavior" name="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService"> 
     <endpoint behaviorConfiguration="AspNetAjaxBehavior" binding="webHttpBinding" bindingConfiguration="webBinding" 
      contract="LIMS.UI.Web.WCFServices.Accessioning.QuickDataEntryService" /> 
     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
    </service> 
0

देखो पता और आपका एंडपॉइंट पता (इसे आपके नमूना कोड में नहीं देख सकता)। सबसे अधिक संभावना है कि आप एक कॉलम या कुछ अन्य टाइपो उदा। https https: // के बजाय: //

0

मैं WebHttpBinding उपयोग कर रहा था और बाध्यकारी विन्यास जो त्रुटि के कारण पर "परिवहन" की सुरक्षा मोड dicate करना भूल गया:

<webHttpBinding> 
    <binding name="MyWCFServiceEndpoint"> 
     <security mode="Transport" /> 
    </binding> 
    </webHttpBinding> 

विन्यास में इस जोड़ना तय मुसीबत।

1

मेरे मामले में मैं बाध्यकारी में "परिवहन" के बजाय सुरक्षा मोड को "ट्रांसपोर्ट क्रेडेंशियलऑनली" पर सेट कर रहा हूं। इसे बदलने से समस्या

<bindings> 
    <webHttpBinding> 
    <binding name="webHttpSecure"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" ></transport> 
     </security> 
     </binding> 
    </webHttpBinding> 
</bindings> 
संबंधित मुद्दे