एक रिमोट कंप्यूटर वह है जिसकी कोई भौतिक उपस्थिति नहीं है; इसे केवल किसी प्रकार के कंप्यूटर नेटवर्क के माध्यम से एक्सेस किया जा सकता है। रिमोट होस्ट वह कंप्यूटर है जो नेटवर्क को होस्ट करता है जो रिमोट कंप्यूटर को होस्ट करता है और रिमोट क्लाइंट नेटवर्क पर रिमोट क्लाइंट का उपयोगकर्ता है। इस सुविधा ने बहुत सारी प्रक्रियाओं में क्रांति ला दी है और भविष्य में भी इसका बड़ा दायरा है।

हालांकि, हाल ही में, रिमोट होस्ट से कनेक्ट करने का प्रयास करते समय "an existing connection was forcibly closed by the remote host" एरर की बहुत सारी रिपोर्टें आ रही हैं। यह एरर क्लाइंट और सर्वर के बीच एक सॉकेट कनेक्शन के साथ ट्रिगर होता है। इस लेख में, हम इस एरर को पूरी तरह से सुधारने के लिए कुछ व्यवहार्य समाधान प्रदान करेंगे और उन कारणों के बारे में भी बताएंगे जो इस एरर को ट्रिगर करते हैं।
विंडोज में 'मौजूदा कनेक्शन को रिमोट होस्ट द्वारा जबरन बंद कर दिया गया' एरर का कारण क्या है?
कई उपयोगकर्ताओं से अनेक रिपोर्ट प्राप्त करने के बाद, हमने इस मुद्दे की जांच करने का निर्णय लिया और इसे ठीक करने के लिए समाधानों का एक सेट तैयार किया। साथ ही, हमने उन कारणों को देखा जिनके कारण यह ट्रिगर होता है और उन्हें नीचे सूचीबद्ध किया।
- TLS 1.1/1.0 उपयोग: यदि एप्लिकेशन TLS 1.1 या TLS 1.0 पर चल रहा है, तो उनके डिप्रिकेटेड होने के कारण यह एरर ट्रिगर हो सकता है। एप्लिकेशन द्वारा उपयोग किए जाने वाले प्रोटोकॉल का चयन करते समय TLS 1.2 ही सही रास्ता है।
- क्रिप्टोग्राफी अक्षम: यदि आपके मशीन के लिए क्रिप्टोग्राफी अक्षम कर दी गई है तो यह TLS 1.2 के उपयोग को रोकेगा और TLS 1.0 पर वापस आ जाएगा जो एरर को ट्रिगर कर सकता है।
- सॉकेट कार्यान्वयन: कुछ मामलों में, एक विशेष प्रकार का सॉकेट कार्यान्वयन एरर को ट्रिगर करता है। ".NET" एप्लिकेशन द्वारा कुछ कार्यान्वयन में एक बग है और यह इस एरर का कारण हो सकता है।
- कोड गुम: कुछ लोगों के लिए जो Entity Framework का उपयोग कर रहे थे, यह देखा गया कि एक निश्चित कोड लाइन गायब थी जिसके कारण एरर ट्रिगर हो रहा था।
- पुराना ".NET" फ्रेमवर्क: कुछ मामलों में, यदि ".NET" फ्रेमवर्क अक्षम कर दिया गया है, तो यह एरर ट्रिगर हो सकता है। कुछ कार्यों के लिए ".NET" फ्रेमवर्क को नवीनतम संस्करण में अपडेट करने की आवश्यकता होती है ताकि वे ठीक से काम कर सकें।
अब जब आपको समस्या की प्रकृति की बुनियादी समझ हो गई है, तो हम समाधानों की ओर बढ़ेंगे। टकराव से बचने के लिए इन्हें प्रस्तुत किए गए विशिष्ट क्रम में लागू करना सुनिश्चित करें।
समाधान 1: क्रिप्टोग्राफी सक्षम करना
यदि आपके मशीन के लिए क्रिप्टोग्राफी अक्षम कर दी गई है तो TLS 1.2 का उपयोग प्रतिबंधित है। इसलिए, इस चरण में, हम क्रिप्टोग्राफी सक्षम करेंगे। उसके लिए:
- "Windows" + "R" दबाकर Run प्रॉम्प्ट खोलें।
- “regedit” टाइप करें और "Enter" दबाएं।

- निम्न पते पर नेविगेट करें
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.3031
यदि दाएं फलक में कोई "SchUseStrongCrypto" मान नहीं है तो इस पते पर नेविगेट करें।
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- दाएं फलक में, "SchUseStrongCrypto" विकल्प पर डबल-क्लिक करें और Value data के रूप में "1" दर्ज करें।

- "OK" पर क्लिक करके अपने परिवर्तन सहेजें और चेक करें कि क्या समस्या बनी रहती है।
समाधान 2: TLS 1.2 उपयोग लागू करना
यदि एप्लिकेशन को TLS 1.2 के बजाय TLS 1.1 या TLS 1.0 उपयोग करने के लिए कॉन्फ़िगर किया गया है, तो यह एरर ट्रिगर कर सकता है। इसलिए, इस चरण में, हम अपने कंप्यूटर को TLS 1.2 उपयोग करने के लिए कॉन्फ़िगर करेंगे। उसके लिए:
- साइट के रूट पर नेविगेट करें और "global.asax" फाइल पर राइट-क्लिक करें।
- सूची से "View Code" चुनें।
- एक "Application_Start" मेथड होना चाहिए, उस मेथड में निम्न कोड लाइन जोड़ें
if (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == false) { ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12; }
- अपने परिवर्तन सहेजें और चेक करें कि क्या समस्या बनी रहती है।
समाधान 3: सॉकेट कार्यान्वयन बदलना
यदि एक निश्चित सॉकेट कार्यान्वयन में बग या ग्लिच है, तो यह एप्लिकेशन के कुछ तत्वों को ठीक से काम करने से रोक सकता है जिसके कारण यह एरर ट्रिगर हो सकता है। इसलिए, इस चरण में, हम इसे एक अलग कार्यान्वयन उपयोग करने के लिए कॉन्फ़िगर करेंगे। उसके लिए:
- सुनिश्चित करें कि आपके पास "StateObject" क्लास है जिसमें "public byte[] buffer = new byte[1024], public Socket socket;" हो।
- "Receive(Socket s)" फ़ंक्शन को कॉल करें और "void ReceiveCallback(IAsyncResult ar)" में निम्न कोड कॉल करें
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; } - इस कोड को लागू करने के बाद देखें कि क्या समस्या बनी रहती है।
समाधान 4: कमांड लाइन जोड़ना (केवल Entity Framework के लिए)
यदि आप Entity Framework का उपयोग कर रहे हैं, तो संभव है कि कोड की एक निश्चित लाइन गायब हो। इसलिए, इस चरण में, हम इस मुद्दे को ठीक करने के लिए कोड की उस लाइन को जोड़ेंगे। उसके लिए:
- अपना ".edmx" फाइल खोलें और उसके नीचे ".context.tt" फाइल खोलें।
- ".context.cs" फाइल खोलें और अपने कंस्ट्रक्टर में निम्न कोड लाइन जोड़ें
public DBEntities() : base("name=DBEntities") { this.Configuration.ProxyCreationEnabled = false; // ADD THIS LINE ! } - कोड की इस लाइन को जोड़ने के बाद देखें कि क्या समस्या बनी रहती है।
समाधान 5: .NET Framework अपडेट करना
सब कुछ सुचारू रूप से चलाने के लिए ".NET" Framework के नवीनतम संस्करण की आवश्यकता होती है। इसलिए, इस चरण में, हम साइट से नवीनतम संस्करण डाउनलोड करेंगे और इसे इंस्टॉल करेंगे। उसके लिए:
- सेटअप डाउनलोड करने के लिए इस लिंक पर नेविगेट करें।
- इंस्टॉलेशन प्रक्रिया शुरू करने के लिए ".exe" फाइल निष्पादित करें।

- एप्लिकेशन को अपने कंप्यूटर पर इंस्टॉल करने के लिए ऑनस्क्रीन निर्देशों का पालन करें।
- इंस्टॉलेशन पूरा होने के बाद चेक करें कि क्या समस्या बनी रहती है।