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

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

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

ما الذي يسبب خطأ "تم إغلاق الاتصال الحالي بالقوة من قبل المضيف البعيد" في 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 \ Microsoft \ .NETFramework \ v4.0.3031

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

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. في الجزء الأيسر ، انقر نقرًا مزدوجًا فوق الخيار " SchUseStrongCrypto " وأدخل " 1 " كبيانات قيمة.
  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) SecurityProtocolType. TLS12 ؛              
  4. احفظ التغييرات وتحقق لمعرفة ما إذا كانت المشكلة قائمة.

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

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

  1. تأكد من أن لديك فئة " StateObjec t" مع " public byte [] buffer = بايت جديد [1024] ، مقبس عام ؛ ".
  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)

إذا كنت تستخدم 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 ” لبدء عملية التثبيت.
  3. اتبع التعليمات التي تظهر على الشاشة لتثبيت التطبيق على جهاز الكمبيوتر الخاص بك.
  4. تحقق لمعرفة ما إذا كانت المشكلة لا تزال قائمة بعد إكمال التثبيت.