मैंने अपनी डब्ल्यूसीएफ सेवाओं को कॉन्फ़िगर करने के तरीके को समझने में काफी समय बिताया ताकि वे उत्पादन वातावरण में https के लिए काम करेंगे।मैं एक web.config में http और https दोनों के लिए डब्ल्यूसीएफ सेवा कॉन्फ़िगरेशन को कैसे जोड़ सकता हूं?
असल में, मैं यह करने के लिए आवश्यक:
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
<endpoint address="" bindingNamespace="https://secure.mydomain.com" binding="basicHttpBinding" bindingConfiguration="HttpsBinding" contract="MyNamespace.IMyService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="HttpsBinding">
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
जोड़ना समाप्ति बिंदु को bindingNamespace
विशेषता अंतिम बात यह है कि यह काम किया जाता है।
लेकिन यह कॉन्फ़िगरेशन मेरे स्थानीय देव पर्यावरण में काम नहीं करता है जहां मैं नियमित http के तहत काम कर रहा हूं। तो मेरी config है:
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
<endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService"/>
</service>
</services>
यहाँ मतभेद मैं गलत पर httpsGetEnabled
विशेषता सेट कर लिया है कर रहे हैं, और मैं bindingConfiguration और bindingNamespace हटा दिया।
समस्या यह है: मैं एक कॉन्फ़िगरेशन ब्लॉक कैसे बना सकता हूं जो दोनों को संभालता है?
मुझे हर बार रिलीज करने पर कॉन्फ़िगरेशन में बहुत से विशेष संशोधन करने से नफरत है। हां, मुझे पता है कि मेरे पास एक पोस्ट-बिल्ड कार्य हो सकता है जो स्वचालित रूप से मानों को बदलता है, लेकिन यदि संभव हो तो मैं कॉन्फ़िगर को मर्ज करना चाहता हूं।
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
<services>
<service name="MyNamespace.MyService" behaviorConfiguration="MyServiceBehavior">
<endpoint address="" binding="basicHttpBinding" contract="MyNamespace.IMyService"/>
<endpoint address="" bindingNamespace="https://secure.mydomain.com" binding="basicHttpBinding" bindingConfiguration="HttpsBinding" contract="MyNamespace.IMyService"/>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="HttpsBinding">
<security mode="Transport">
<transport clientCredentialType="None"></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
मैं लगा कि दोनों अंतिमबिंदुओं डाल यह दो विकल्प जब सेवा को सक्रिय करने के लिए देखने के लिए देना होगा:
मैं कुछ इस तरह की कोशिश की। हालांकि, यह काम नहीं करता है। मुझे यह त्रुटि मिलती है:
बेसिक एचटीपीबी बाइंडिंग बाध्यकारी के साथ एंडपॉइंट के लिए योजना https से मेल खाता एक आधार पता नहीं मिला। पंजीकृत आधार पता योजनाएं [http] हैं।
एसओ और बाकी इंटरनेट के आसपास देखने से, ऐसा लगता है कि दूसरों को इस ड्रैगन को मारने में समस्याएं आई हैं।
क्या आप आईआईएस में अपनी डब्ल्यूसीएफ सेवा होस्ट कर रहे हैं, या आप स्वयं-होस्टिंग कर रहे हैं ?? –
उन्हें एएसपी.NET वेब एप्लिकेशन में .svc फ़ाइलों के रूप में होस्ट किया जा रहा है। देव और प्रोड दोनों पर आईआईएस 7 का उपयोग करना। – sohtimsso1970
@ sohtimsso1970: क्या आपको इसका समाधान मिला? – Learner