एक दूरस्थ कंप्यूटर वह है जिसकी कोई भौतिक उपस्थिति नहीं है; इसे केवल किसी प्रकार के कंप्यूटर नेटवर्क के माध्यम से एक्सेस किया जा सकता है। रिमोट होस्ट नेटवर्क को होस्ट करने वाला कंप्यूटर है जो रिमोट कंप्यूटर को होस्ट करता है और रिमोट क्लाइंट नेटवर्क पर रिमोट क्लाइंट का उपयोगकर्ता होता है। इस सुविधा ने बहुत सारी प्रक्रियाओं में क्रांति ला दी है और भविष्य में भी इसकी व्यापक गुंजाइश है।
हालांकि, हाल ही में, "एक मौजूदा कनेक्शन को दूरस्थ होस्ट द्वारा जबरन बंद कर दिया गया था" के बारे में बहुत सारी रिपोर्टें आ रही हैं। "दूरस्थ होस्ट से कनेक्ट करने का प्रयास करते समय त्रुटि। यह त्रुटि क्लाइंट और सर्वर के बीच सॉकेट कनेक्शन के साथ शुरू होती है। इस लेख में, हम इस त्रुटि को पूरी तरह से ठीक करने के लिए कुछ व्यवहार्य समाधान प्रदान करेंगे और आपको उन कारणों से भी अवगत कराएंगे जो इस त्रुटि को ट्रिगर करते हैं।
Windows में 'एक मौजूदा कनेक्शन को दूरस्थ होस्ट द्वारा जबरन बंद कर दिया गया' त्रुटि का क्या कारण है?
कई उपयोगकर्ताओं से कई रिपोर्ट प्राप्त करने के बाद, हमने इस मुद्दे की जांच करने का निर्णय लिया और इसे ठीक करने के लिए समाधानों का एक सेट तैयार किया। साथ ही, हमने इसके ट्रिगर होने के कारणों पर गौर किया और उन्हें नीचे सूचीबद्ध किया।
- TLS 1.1/1.0 उपयोग: यदि एप्लिकेशन टीएलएस 1.1 या टीएलएस 1.0 पर चल रहा है, तो यह उनके मूल्यह्रास के कारण इस त्रुटि को ट्रिगर कर सकता है। TLS 1.2 उस प्रोटोकॉल का चयन करने का तरीका है जिसका अनुप्रयोग उपयोग करता है।
- क्रिप्टोग्राफी अक्षम: यदि आपकी मशीन के लिए क्रिप्टोग्राफी को अक्षम कर दिया गया है तो यह टीएलएस 1.2 के उपयोग को रोक देगा और टीएलएस 1.0 पर वापस आ जाएगा जो त्रुटि को ट्रिगर कर सकता है।
- सॉकेट कार्यान्वयन: कुछ मामलों में, एक विशेष प्रकार का सॉकेट कार्यान्वयन त्रुटि को ट्रिगर करता है। ".NET" एप्लिकेशन द्वारा कुछ कार्यान्वयन के साथ एक बग है और यह इस त्रुटि का कारण हो सकता है।
- कोड मौजूद नहीं है: कुछ लोगों के लिए जो एंटिटी फ्रेमवर्क का उपयोग कर रहे थे, यह देखा गया कि कोड की एक निश्चित पंक्ति गायब थी जिसके कारण त्रुटि शुरू हो रही थी।
- पुराना “.NET” ढांचा: कुछ मामलों में, यदि ".NET" फ्रेमवर्क अक्षम कर दिया गया है, तो यह त्रुटि ट्रिगर हो सकती है। कुछ कार्यों को ठीक से काम करने के लिए ".NET" ढांचे को नवीनतम संस्करण में अद्यतन करने की आवश्यकता होती है।
अब जब आपको समस्या की प्रकृति की बुनियादी समझ हो गई है, तो हम समाधान की ओर बढ़ेंगे। संघर्षों से बचने के लिए इन्हें उस विशिष्ट क्रम में लागू करना सुनिश्चित करें जिसमें इन्हें प्रस्तुत किया गया है।
समाधान 1:क्रिप्टोग्राफ़ी सक्षम करना
यदि आपकी मशीन के लिए क्रिप्टोग्राफी अक्षम कर दी गई है तो TLS 1.2 का उपयोग प्रतिबंधित है। इसलिए, इस चरण में, हम क्रिप्टोग्राफी को सक्षम करेंगे। उसके लिए:
- दबाएं “विंडोज " + "आर रन प्रॉम्प्ट खोलने के लिए।
- टाइप करें “regedit” और “Enter . दबाएं ".
- निम्न पते पर नेविगेट करें
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.3031
यदि "SchUseStrongCrypto . नहीं है तो इस पते पर नेविगेट करें दाएँ फलक में “मान।
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- दाएं फलक में, “SchUseStrongCrypto पर डबल क्लिक करें “विकल्प और “1 . दर्ज करें "मूल्य डेटा के रूप में।
- “ठीक . पर क्लिक करें ” अपने परिवर्तनों को सहेजने के लिए और जांचें यह देखने के लिए कि क्या समस्या बनी रहती है।
समाधान 2:TLS 1.2 उपयोग के लिए बाध्य करना
यदि एप्लिकेशन को TLS 1.2 के बजाय TLS 1.1 या TLS 1.0 का उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो यह इस त्रुटि को ट्रिगर कर सकता है। इसलिए, इस चरण में, हम अपने कंप्यूटर को TLS 1.2 का उपयोग करने के लिए कॉन्फ़िगर करेंगे। उसके लिए:
- साइट के मूल में नेविगेट करें और “global.asax” पर राइट-क्लिक करें फ़ाइल।
- चुनें “देखें कोड सूची से।
- एक "आवेदन_प्रारंभ . होना चाहिए “विधि, उस विधि में कोड की निम्न पंक्ति जोड़ें
if (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == false) { ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12; }
- सहेजें अपने परिवर्तन और जांचें यह देखने के लिए कि क्या समस्या बनी रहती है।
समाधान 3:सॉकेट कार्यान्वयन बदलना
यदि किसी निश्चित सॉकेट कार्यान्वयन में बग या गड़बड़ है, तो यह एप्लिकेशन के कुछ तत्वों को ठीक से काम करने से रोक सकता है जिसके कारण यह त्रुटि ट्रिगर हो सकती है। इसलिए, इस चरण में, हम इसे किसी भिन्न कार्यान्वयन का उपयोग करने के लिए कॉन्फ़िगर करेंगे। उसके लिए:
- सुनिश्चित करें कि आपके पास "StateObjec . है t" वर्ग के साथ "सार्वजनिक बाइट[] बफ़र =नया बाइट[1024], सार्वजनिक सॉकेट सॉकेट; ".
- कॉल करें "प्राप्त करें(सॉकेट एस) " कार्य करें और निम्न कोड को "void ReceiveCallback(IAsyncResult ar) में कॉल करें "
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; }
- यह देखने के लिए जांचें कि क्या इस कोड को लागू करने के बाद भी समस्या बनी रहती है।
समाधान 4:कमांड लाइन जोड़ना (केवल एंटिटी फ्रेमवर्क के लिए)
यदि आप एंटिटी फ्रेमवर्क का उपयोग कर रहे हैं, तो संभव है कि कोड की एक निश्चित पंक्ति गायब हो। इसलिए, इस चरण में, हम इस समस्या को ठीक करने के लिए कोड की उस पंक्ति को जोड़ेंगे। उसके लिए:
- अपना “.edmx खोलें ” फ़ाइल खोलें और “.context.tt . खोलें इसके नीचे फ़ाइल करें।
- खोलें “.context.cs "फ़ाइल और कोड की निम्न पंक्ति को अपने कंस्ट्रक्टर में जोड़ें
public DBEntities() : base("name=DBEntities") { this.Configuration.ProxyCreationEnabled = false; // ADD THIS LINE ! }
- यह देखने के लिए जांचें कि क्या कोड की इस पंक्ति को जोड़ने के बाद भी समस्या बनी रहती है।
समाधान 5:.NET फ्रेमवर्क को अपडेट करना
सब कुछ सुचारू रूप से कार्य करने के लिए ".NET" फ्रेमवर्क का नवीनतम संस्करण आवश्यक है। इसलिए, इस चरण में, हम साइट से नवीनतम संस्करण डाउनलोड करेंगे और इसे स्थापित करेंगे। उसके लिए:
- सेटअप डाउनलोड करने के लिए इस लिंक पर नेविगेट करें।
- “.exe . निष्पादित करें "स्थापना प्रक्रिया शुरू करने के लिए फ़ाइल।
- अनुसरण करें आपके कंप्यूटर पर एप्लिकेशन इंस्टॉल करने के लिए ऑनस्क्रीन निर्देश।
- जांचें यह देखने के लिए कि क्या इंस्टॉलेशन पूरा करने के बाद भी समस्या बनी रहती है।