วิธีแก้ไข & 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” ถูกปิดใช้งานข้อผิดพลาดนี้อาจถูกทริกเกอร์ งานบางอย่างต้องการเฟรมเวิร์ก“ .NET” เพื่ออัปเดตเป็นเวอร์ชันล่าสุดเพื่อให้ทำงานได้อย่างถูกต้อง

เมื่อคุณมีความเข้าใจพื้นฐานเกี่ยวกับลักษณะของปัญหาแล้วเราจะดำเนินการแก้ไขต่อไป อย่าลืมนำสิ่งเหล่านี้ไปใช้ตามลำดับเฉพาะที่นำเสนอเพื่อหลีกเลี่ยงความขัดแย้ง

โซลูชันที่ 1: การเปิดใช้งานการเข้ารหัส

หากการเข้ารหัสถูกปิดใช้งานสำหรับเครื่องของคุณจะห้ามใช้ TLS 1.2 ดังนั้นในขั้นตอนนี้เราจะเปิดใช้งานการเข้ารหัส สำหรับการที่:

  1. กด“ Windows ” +“ R ” เพื่อเปิดพร้อมท์เรียกใช้
  2. พิมพ์“ regedit”แล้วกด“ Enter
  3. ไปที่ที่อยู่ต่อไปนี้
    HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ .NETFramework \ v4.0.3031

    ไปที่ที่อยู่นี้หากไม่มีค่า“ SchUseStrongCrypto ” ในบานหน้าต่างด้านขวา

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. ในบานหน้าต่างด้านขวาดับเบิลคลิกที่ตัวเลือก“ SchUseStrongCrypto ” และป้อน“ 1 ” เป็น Value data
  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 [] = new byte [1024], public 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 เท่านั้น)

หากคุณกำลังใช้ 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. ตรวจสอบดูว่าปัญหายังคงมีอยู่หรือไม่หลังจากเสร็จสิ้นการติดตั้ง