كيفية إصلاح "تم إغلاق اتصال موجود بالقوة من قبل المضيف البعيد" خطأ؟

الكمبيوتر البعيد هو جهاز الكمبيوتر الذي ليس له وجود مادي ؛ لا يمكن الوصول إليها إلا من خلال نوع من شبكة الكمبيوتر. المضيف البعيد هو الكمبيوتر الذي يستضيف الشبكة التي تستضيف الكمبيوتر البعيد والعميل البعيد هو مستخدم العميل البعيد على الشبكة. أحدثت هذه الميزة ثورة في الكثير من العمليات ولها نطاق كبير في المستقبل أيضًا.

تم إغلاق اتصال موجود بالقوة بسبب خطأ المضيف المحلي

ومع ذلك ، في الآونة الأخيرة ، تم تلقي الكثير من التقارير عن خطأ " تم إغلاق اتصال موجود قسراً بواسطة المضيف البعيد " أثناء محاولة الاتصال بالمضيف البعيد. يتم تشغيل هذا الخطأ مع اتصال مأخذ توصيل بين عميل وخادم. في هذه المقالة ، سوف نقدم بعض الحلول القابلة للتطبيق لتصحيح هذا الخطأ تمامًا ونعلمك أيضًا بالأسباب التي تؤدي إلى حدوث هذا الخطأ.

ما الذي يسبب "خطأ في الاتصال الحالي تم إغلاقه بواسطة المضيف البعيد" خطأ في Windows؟

بعد تلقي العديد من التقارير من عدة مستخدمين ، قررنا التحقيق في المشكلة ووضع مجموعة من الحلول لإصلاحها. أيضًا ، نظرنا في الأسباب التي أدت إلى تشغيله وسردها أدناه.

  • استخدام 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" Framework ، فقد يتم تشغيل هذا الخطأ. تتطلب بعض المهام تحديث إطار ".NET" إلى أحدث إصدار حتى تعمل بشكل صحيح.

الآن بعد أن أصبح لديك فهم أساسي لطبيعة المشكلة ، سننتقل إلى الحلول. تأكد من تطبيق هذه بالترتيب المحدد الذي يتم به لتجنب التعارضات.

الحل 1: تمكين التشفير

إذا تم تعطيل التشفير لجهازك ، فإن استخدام TLS 1.2 محظور. لذلك ، في هذه الخطوة ، سنقوم بتمكين التشفير. من أجل هذا:

  1. اضغط على " Windows " + " R " لفتح موجه التشغيل.
  2. اكتب "رجديت" واضغط على " أدخل ".

    الكتابة في "رجديت" والضغط على "أدخل"
  3. انتقل إلى العنوان التالي
     HKEY_LOCAL_MACHINE \ SOFTWARE \ مايكروسوفت \ .NETFramework \ v4.0.3031 

    انتقل إلى هذا العنوان إذا لم تكن هناك قيمة " SchUseStrongCrypto " في الجزء الأيسر.

     HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ مايكروسوفت \ .NETFramework \ v4.0.30319 
  4. في الجزء الأيسر ، انقر نقرًا مزدوجًا فوق خيار " SchUseStrongCrypto " وأدخل " 1 " كبيانات قيمة.

    النقر المزدوج على قيمة "SchUseStrongCrypto" في الجزء الأيسر
  5. انقر فوق " موافق " لحفظ التغييرات الخاصة بك والتحقق لمعرفة ما إذا كانت المشكلة لا تزال قائمة.

الحل 2: فرض استخدام TLS 1.2

إذا تم تكوين التطبيق لاستخدام TLS 1.1 أو TLS 1.0 بدلاً من TLS 1.2 ، فقد يؤدي هذا الخطأ. لذلك ، في هذه الخطوة ، سنقوم بتكوين جهاز الكمبيوتر الخاص بنا لاستخدام TLS 1.2. من أجل هذا:

  1. انتقل إلى جذر الموقع وانقر بزر الماوس الأيمن على ملف "global.asax" .
  2. اختر " عرض الكود " من القائمة.
  3. يجب أن يكون هناك طريقة " Application_Start " ، أضف السطر التالي من التعليمات البرمجية إلى هذه الطريقة
     إذا كان (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) ServicePointManager. SecurityProtocol = ServicePointManager. SecurityProtocol 

    إضافة السطور إلى الكود
  4. احفظ تغييراتك وتحقق مما إذا كانت المشكلة قائمة.

الحل 3: تغيير تنفيذ المقبس

إذا كان تطبيق مأخذ توصيل معين به خلل أو خلل فيه ، فقد يمنع ذلك بعض عناصر التطبيق من العمل بشكل صحيح بسبب حدوث هذا الخطأ. لذلك ، في هذه الخطوة ، سنقوم بتكوينه لاستخدام تطبيق مختلف. من أجل هذا:

  1. تأكد من أن لديك فئة " StateObjec t" مع " public byte [] buffer = بايت جديد [1024] ، ومأخذ Socket عام ؛ ".
  2. استدعاء دالة " Receive (Socket s) " واستدعاء التعليمة البرمجية التالية في " void ReceiveCallback (IAsyncResult ar) "
      SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar, out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. تحقق لمعرفة ما إذا كانت المشكلة استمرت بعد تطبيق هذا الرمز.

الحل 4: إضافة خطوط الأوامر (فقط لإطار الكيان)

إذا كنت تستخدم Entity Framework ، فمن المحتمل أن يكون سطر معين من التعليمات البرمجية مفقودًا. لذلك ، في هذه الخطوة ، سنضيف سطر التعليمات البرمجية هذا لحل هذه المشكلة. من أجل هذا:

  1. افتح ملف " .edmx " وافتح ملف " .context.tt " أسفله.
  2. افتح ملف " .context.cs " وأضف سطر التعليمات البرمجية التالي إلى مُنشئك
      public DBEntities () : base ( "name=DBEntities" ) { this . Configuration . ProxyCreationEnabled = false ; // ADD THIS LINE ! } 
  3. تحقق لمعرفة ما إذا كانت المشكلة استمرت بعد إضافة سطر التعليمات البرمجية هذا.

الحل 5: تحديث. NET Framework

مطلوب أحدث إصدار من ".NET" Framework حتى يعمل كل شيء بسلاسة. لذلك ، في هذه الخطوة ، سنقوم بتنزيل أحدث إصدار من الموقع وتثبيته. من أجل هذا:

  1. انتقل إلى هذا الرابط لتنزيل الإعداد.
  2. قم بتنفيذ ملف " exe " لبدء عملية التثبيت.

    تشغيل الملف القابل للتنفيذ الذي تم تنزيله من Microsoft
  3. اتبع الإرشادات التي تظهر على الشاشة لتثبيت التطبيق على جهاز الكمبيوتر الخاص بك.
  4. تحقق لمعرفة ما إذا كانت المشكلة استمرت بعد الانتهاء من التثبيت.

مقالات مثيرة للاهتمام