คอมพิวเตอร์ระยะไกลคือคอมพิวเตอร์ที่ไม่มีอยู่จริง สามารถเข้าถึงได้ผ่านเครือข่ายคอมพิวเตอร์บางประเภทเท่านั้น โฮสต์ระยะไกลคือคอมพิวเตอร์ที่โฮสต์เครือข่ายซึ่งโฮสต์คอมพิวเตอร์ระยะไกลและไคลเอนต์ระยะไกลเป็นผู้ใช้ไคลเอ็นต์ระยะไกลบนเครือข่าย คุณลักษณะนี้ได้ปฏิวัติกระบวนการมากมายและมีขอบเขตที่ดีในอนาคตเช่นกัน
การเชื่อมต่อที่มีอยู่ถูกบังคับปิดโดยข้อผิดพลาดของโลคัลโฮสต์
อย่างไรก็ตามเมื่อไม่นานมานี้มีรายงานมากมายเกี่ยวกับ“ การเชื่อมต่อที่มีอยู่ถูกบังคับปิดโดยโฮสต์ระยะไกล ” เกิดข้อผิดพลาดขณะพยายามเชื่อมต่อกับโฮสต์ระยะไกล ข้อผิดพลาดนี้เกิดขึ้นจากการเชื่อมต่อซ็อกเก็ตระหว่างไคลเอนต์และเซิร์ฟเวอร์ ในบทความนี้เราจะนำเสนอวิธีแก้ไขที่เป็นไปได้เพื่อแก้ไขข้อผิดพลาดนี้อย่างสมบูรณ์และแจ้งให้คุณทราบถึงสาเหตุที่ทำให้เกิดข้อผิดพลาดนี้
อะไรเป็นสาเหตุของข้อผิดพลาด 'การเชื่อมต่อที่มีอยู่ถูกปิดโดยโฮสต์ระยะไกล' ใน 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 ดังนั้นในขั้นตอนนี้เราจะเปิดใช้งานการเข้ารหัส สำหรับการที่:
- กด“ Windows '+' ร ” เพื่อเปิดพรอมต์เรียกใช้
- พิมพ์ “ regedit” แล้วกด“ ป้อน '.
พิมพ์“ Regedit” แล้วกด“ Enter”
- ไปที่ที่อยู่ต่อไปนี้
HKEY_LOCAL_MACHINE SOFTWARE Microsoft .NETFramework v4.0.3031
ไปที่ที่อยู่นี้หากไม่มี“ SchUseStrongCrypto ” ในบานหน้าต่างด้านขวา
HKEY_LOCAL_MACHINE SOFTWARE Wow6432Node Microsoft .NETFramework v4.0.30319
- ในบานหน้าต่างด้านขวาดับเบิลคลิกที่ ' SchUseStrongCrypto ” และป้อน“ 1 ” เป็นข้อมูลค่า
ดับเบิลคลิกที่ค่า“ SchUseStrongCrypto” ในบานหน้าต่างด้านขวา
- คลิกที่ ' ตกลง ” เพื่อบันทึกการเปลี่ยนแปลงและ ตรวจสอบ เพื่อดูว่าปัญหายังคงมีอยู่หรือไม่
โซลูชันที่ 2: การบังคับใช้ TLS 1.2
หากแอปพลิเคชันได้รับการกำหนดค่าให้ใช้ TLS 1.1 หรือ TLS 1.0 แทน TLS 1.2 อาจทำให้เกิดข้อผิดพลาดนี้ ดังนั้นในขั้นตอนนี้เราจะกำหนดค่าคอมพิวเตอร์ของเราให้ใช้ TLS 1.2 สำหรับการที่:
- ไปที่รูทของไซต์และคลิกขวาที่ไฟล์ “ global.asax” ไฟล์.
- เลือก“ ดู รหัส ” จากรายการ
- ควรมี“ Application_Start ” เพิ่มบรรทัดของโค้ดต่อไปนี้ในวิธีการนั้น
ถ้า (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == เท็จ) SecurityProtocolType.Tls12;
การเพิ่มบรรทัดลงในโค้ด
- บันทึก การเปลี่ยนแปลงของคุณและ ตรวจสอบ เพื่อดูว่าปัญหายังคงมีอยู่หรือไม่
โซลูชันที่ 3: การเปลี่ยนการใช้งานซ็อกเก็ต
หากการใช้งานซ็อกเก็ตบางอย่างมีข้อบกพร่องหรือความผิดพลาดอาจทำให้องค์ประกอบบางอย่างของแอปพลิเคชันทำงานไม่ถูกต้องเนื่องจากข้อผิดพลาดนี้อาจเกิดขึ้น ดังนั้นในขั้นตอนนี้เราจะกำหนดค่าให้ใช้การใช้งานที่แตกต่างกัน สำหรับการที่:
- ตรวจสอบให้แน่ใจว่าคุณมี“ StateObjec t” คลาสกับ“ ไบต์สาธารณะ [] บัฟเฟอร์ = ไบต์ใหม่ [1024], ซ็อกเก็ต Socket สาธารณะ; '.
- โทรหา“ รับ (ซ็อกเก็ต) ” และเรียกรหัสต่อไปนี้ใน“ โมฆะ ReceiveCallback (IAsyncResult ar) '
SocketErrorerrorCode; intnBytesRec=เบ้า.EndReceive(ด้วย, ออกerrorCode); ถ้า (errorCode! = SocketError.ประสบความสำเร็จ) {nBytesRec= 0; }
- ตรวจสอบเพื่อดูว่าปัญหายังคงมีอยู่หรือไม่หลังจากติดตั้งโค้ดนี้
โซลูชันที่ 4: การเพิ่มบรรทัดคำสั่ง (สำหรับ Entity Framework เท่านั้น)
หากคุณกำลังใช้ Entity Framework เป็นไปได้ว่าโค้ดบางบรรทัดอาจขาดหายไป ดังนั้นในขั้นตอนนี้เราจะเพิ่มบรรทัดรหัสนั้นเพื่อแก้ไขปัญหานี้ สำหรับการที่:
- เปิด“ .edmx ” แล้วเปิดไฟล์“ .context.tt ” อยู่ด้านล่าง
- เปิด ' .context.cs ” และเพิ่มบรรทัดของโค้ดต่อไปนี้ในตัวสร้างของคุณ
สาธารณะ DBEntities() : ฐาน('ชื่อ = DBEntities') { นี้.การกำหนดค่า.ProxyCreationEnabled = เท็จ; // แอดไลน์นี้! }
- ตรวจสอบดูว่าปัญหายังคงมีอยู่หรือไม่หลังจากเพิ่มบรรทัดของรหัสนี้
แนวทางที่ 5: การอัปเดต. NET Framework
ต้องใช้ '.NET' Framework เวอร์ชันล่าสุดเพื่อให้ทุกอย่างทำงานได้อย่างราบรื่น ดังนั้นในขั้นตอนนี้เราจะดาวน์โหลดเวอร์ชันล่าสุดจากไซต์และติดตั้ง สำหรับการที่:
- นำทางไปยัง นี้ ลิงค์เพื่อดาวน์โหลดการตั้งค่า
- ดำเนินการตาม“ .exe ” เพื่อเริ่มกระบวนการติดตั้ง
เรียกใช้ไฟล์ปฏิบัติการที่ดาวน์โหลดจาก Microsoft
- ติดตาม คำแนะนำบนหน้าจอเพื่อติดตั้งแอปพลิเคชันบนคอมพิวเตอร์ของคุณ
- ตรวจสอบ เพื่อดูว่าปัญหายังคงมีอยู่หรือไม่หลังจากเสร็จสิ้นการติดตั้ง