2015-03-25 4 views
11

https पर काम करने के लिए wcf कैसे बनाएं। मैं https पर इस डब्ल्यूसीएफ का उपयोग करना चाहता हूं मैंने कई लेख खोजे हैं जिन्हें मुझे जवाब नहीं मिला है कृपया कृपया wcf अवधारणाओं के लिए नया Iam मदद करें। मैं यह ajax से कॉल करने के लिए, jQueryडब्ल्यूसीएफ रीस्टफुल सेवा पर एचटीटीपीएस कैसे सक्षम करें?

<system.serviceModel > 
<services> 
    <service 
    name="WcfRestfulService.HttpService" behaviorConfiguration="ServiceBehaviour" > 
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="web" 
       contract="WcfRestfulService.IHttpService"> 
    </endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehaviour"> 
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --> 
     <serviceMetadata httpsGetEnabled="true"/> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="web"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 

+0

आप इसे केवल के साथ साथ चाहते हैं 'webHttpBinding' या' basichttpbinding' भी उद्देश्य पूरा होगा? –

+0

डेरेक डब्ल्यू के जवाब एकदम सही है, लेकिन एक बिंदु के लिए: < बाइंडिंग > तत्व < सेवाओं > अंदर नहीं हो सकता है - यह अपने स्थान पर हिलता </सेवाओं > के बाद और < व्यवहार > से पहले। – Craig

उत्तर

26

ऐसा लगता है कि एक RESTful निर्माण कर रहे हैं बंधन

<basicHttpBinding> 
    <binding name="secureHttpBinding"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"/> 
     </security> 
    </binding> 
    </basicHttpBinding> 

पढ़ें में security mode="Transport" निर्धारित करने की आवश्यकता चाहते हैं डब्ल्यूसीएफ के साथ सेवा और आप इसे सुरक्षित करने के लिए वास्तव में बंद कर रहे हैं।

  1. एक नया WebHttpBinding विन्यास Transport करने के लिए सेट सुरक्षा मोड है कि जोड़ें:

    यहाँ आप यह सुरक्षित करने के लिए क्या करने की जरूरत है।

  2. अपने सेवा एंडपॉइंट बाइंडिंग के लिए नया WebHttpBinding कॉन्फ़िगरेशन असाइन करें।
  3. सुनिश्चित करें कि आपकी रीस्टफुल सेवा केवल httpGetEnabled="false" सेट करके HTTPS के माध्यम से पहुंचा जा सके।
  4. HTTPS का उपयोग करने के लिए मेटाडेटा प्रकाशन समापन बिंदु सेट करें।

ये परिवर्तन सभी संशोधित कॉन्फ़िगरेशन फ़ाइल में नीचे दिए गए हैं (बदले गए बिंदुओं के लिए टिप्पणियां देखें)। यह भी ध्यान रखें कि आपका सेवा समापन बिंदु HTTPS योजना का उपयोग करना चाहिए, न कि HTTP।

<system.serviceModel > 
    <services> 
    <service name="WcfRestfulService.HttpService" 
       behaviorConfiguration="ServiceBehaviour" > 
     <endpoint address="" 
        binding="webHttpBinding" 
        <!-- Add reference to secure WebHttpBinding config --> 
        bindingConfiguration="webHttpTransportSecurity" 
        behaviorConfiguration="web" 
        contract="WcfRestfulService.IHttpService" /> 
     <!-- Need to make sure that our metadata 
       publishing endpoint is using HTTPS as well --> 
     <endpoint address="mex" 
        binding="mexHttpsBinding" 
        contract="IMetadataExchange" /> 
    </service> 
    <!-- Add secure WebHttpBinding config --> 
    <bindings> 
     <webHttpBinding> 
      <binding name="webHttpTransportSecurity"> 
       <security mode="Transport" /> 
      </binding> 
     </webHttpBinding> 
    </bindings> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="ServiceBehaviour"> 
      <serviceMetadata httpsGetEnabled="true" 
           <!-- Make sure the service can 
           be accessed only via HTTPS --> 
           httpGetEnabled="false"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/> 
</system.serviceModel> 
+1

इससे मुझे मदद मिली लेकिन एक चिमटा के साथ। आपके वही उत्तर का उपयोग करके मुझे यह त्रुटि 'अपरिचित तत्व' बाइंडिंग 'थी। ऐसा इसलिए है क्योंकि से बाहर होना था – Mese

1

आप के बारे में अधिक MSDN

+4

डब्ल्यूसीएफ के साथ विश्वसनीय सेवाओं को 'WebHttp बाइंडिंग' का उपयोग करने की आवश्यकता है, न कि 'BasicHttp बाइंडिंग'। 'WebHttp बाइंडिंग' यह है कि डब्ल्यूसीएफ सेवाओं को एक यथार्थ तरीके से कैसे उजागर करता है। आपका उत्तर SOAP- आधारित सेवाओं के संदर्भ में सही है। –

0

मुझे एक ही समस्या थी, लेकिन HTTP सेवाओं के अनुरोधों का परीक्षण करना चाहता था, क्योंकि मेरी सेवाएं आंतरिक हैं।

एचटीटीपीएस सक्षम करने के लिए भी याद रखें। httpsGetEnabled="true"

मेरे config एक उदाहरण के रूप में नीचे है:

<bindings > 
     <basicHttpBinding> 
     <binding name="secureHttpBinding" > 
      <security mode="Transport" /> 
     </binding> 
    </bindings> 
    ..... 
    <behaviors> 
     <serviceBehaviors> 
     <behavior > 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="false"/> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
संबंधित मुद्दे