Máy tính từ xa là máy tính không có sự hiện diện thực tế; nó chỉ có thể được truy cập thông qua một số loại mạng máy tính. Máy chủ từ xa là máy tính lưu trữ mạng chứa máy tính từ xa và máy khách từ xa là người dùng của máy khách từ xa trên mạng. Tính năng này đã cách mạng hóa rất nhiều quy trình và cũng có phạm vi rộng lớn trong tương lai.
Tuy nhiên, gần đây, rất nhiều báo cáo về “ kết nối hiện tại đã bị máy chủ từ xa buộc đóng ”Lỗi khi cố gắng kết nối với máy chủ từ xa. Lỗi này được kích hoạt với kết nối ổ cắm giữa máy khách và máy chủ. Trong bài viết này, chúng tôi sẽ cung cấp một số giải pháp khả thi để khắc phục hoàn toàn lỗi này và cũng thông báo cho bạn những lý do gây ra lỗi này.
Nguyên nhân nào gây ra Lỗi "Một kết nối hiện có bị buộc đóng bởi máy chủ từ xa" trong Windows?
Sau khi nhận được nhiều báo cáo từ nhiều người dùng, chúng tôi quyết định điều tra vấn đề và nghĩ ra một loạt giải pháp để khắc phục. Ngoài ra, chúng tôi đã xem xét các lý do mà nó được kích hoạt và liệt kê chúng bên dưới.
- TLS 1.1 / 1.0 Cách sử dụng: Nếu ứng dụng đang chạy trên TLS 1.1 hoặc TLS 1.0, nó có thể gây ra lỗi này do chúng bị giảm giá trị. TLS 1.2 là cách thực hiện khi chọn giao thức mà ứng dụng sử dụng.
- Mật mã bị vô hiệu hóa: Nếu Cryptography đã bị tắt cho máy của bạn, nó sẽ ngăn việc sử dụng TLS 1.2 và sẽ quay trở lại TLS 1.0, điều này có thể gây ra lỗi.
- Triển khai Socket: Trong một số trường hợp, một kiểu triển khai socket cụ thể gây ra lỗi. Đã xảy ra lỗi với một số triển khai của ứng dụng “.NET” và nó có thể gây ra lỗi này.
- Thiếu Mã: Đối với một số người đang sử dụng Khung thực thể, có thể nhận thấy rằng một dòng mã nhất định bị thiếu do lỗi được kích hoạt.
- Khung “.NET” đã lỗi thời: Trong một số trường hợp nhất định, nếu Khuôn khổ “.NET” đã bị vô hiệu hóa, lỗi này có thể được kích hoạt. Một số tác vụ yêu cầu phải cập nhật khuôn khổ “.NET” lên phiên bản mới nhất để chúng hoạt động bình thường.
Bây giờ bạn đã hiểu cơ bản về bản chất của vấn đề, chúng ta sẽ chuyển sang các giải pháp. Đảm bảo thực hiện những điều này theo thứ tự cụ thể mà chúng được trình bày để tránh xung đột.
Giải pháp 1:Bật mật mã
Nếu Cryptography đã bị vô hiệu hóa cho máy của bạn, việc sử dụng TLS 1.2 sẽ bị cấm. Do đó, trong bước này, chúng tôi sẽ bật Cryptography. Vì điều đó:
- Nhấn “ Windows ”+“ R ”Để mở lời nhắc Run.
- Nhập “regedit” và nhấn “ Enter “.
- Điều hướng đến địa chỉ sau
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.3031
Điều hướng đến địa chỉ này nếu không có “ SchUseStrongCrypto ”Trong ngăn bên phải.
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
- Trong ngăn bên phải, nhấp đúp vào “ SchUseStrongCrypto ”Và nhập“ 1 ”Dưới dạng dữ liệu Giá trị.
- Nhấp vào “ OK ”Để lưu các thay đổi của bạn và kiểm tra để xem sự cố vẫn tiếp diễn.
Giải pháp 2:Buộc sử dụng TLS 1.2
Nếu ứng dụng đã được định cấu hình để sử dụng TLS 1.1 hoặc TLS 1.0 thay vì TLS 1.2, nó có thể gây ra lỗi này. Do đó, trong bước này, chúng ta sẽ cấu hình máy tính của mình để sử dụng TLS 1.2. Vì điều đó:
- Điều hướng đến thư mục gốc của trang web và nhấp chuột phải vào “global.asax” tệp.
- Chọn “ Xem Mã ”Từ danh sách.
- Phải có một “ Application_Start ”, Thêm dòng mã sau vào phương thức đó
if (ServicePointManager.SecurityProtocol.HasFlag(SecurityProtocolType.Tls12) == false) { ServicePointManager.SecurityProtocol = ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls12; }
- Lưu các thay đổi của bạn và kiểm tra để xem sự cố vẫn tiếp diễn.
Giải pháp 3:Thay đổi Triển khai Socket
Nếu một triển khai socket nhất định có lỗi hoặc trục trặc trong đó, nó có thể ngăn các phần tử nhất định của ứng dụng hoạt động bình thường do đó lỗi này có thể được kích hoạt. Do đó, trong bước này, chúng tôi sẽ cấu hình nó để sử dụng một triển khai khác. Vì điều đó:
- Đảm bảo rằng bạn có “ StateObjec lớp t ”với“ byte công khai [] buffer =new byte [1024], ổ cắm Socket công cộng; “.
- Gọi “ Nhận (Socket s) ”Và gọi mã sau trong“ void allowCallback (IAsyncResult ar) ”
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; }
- Kiểm tra xem sự cố vẫn tiếp diễn sau khi triển khai mã này.
Giải pháp 4:Thêm Dòng lệnh (Chỉ dành cho Khung thực thể)
Nếu bạn đang sử dụng Khung thực thể, có thể một dòng mã nhất định có thể bị thiếu. Do đó, trong bước này, chúng tôi sẽ thêm dòng mã đó để khắc phục sự cố này. Vì điều đó:
- Mở “ .edmx của bạn ”Và mở tệp“ .context.tt ”Bên dưới nó.
- Mở “ .context.cs ”Và thêm dòng mã sau vào hàm tạo của bạn
public DBEntities() : base("name=DBEntities") { this.Configuration.ProxyCreationEnabled = false; // ADD THIS LINE ! }
- Kiểm tra xem sự cố vẫn tiếp diễn sau khi thêm dòng mã này.
Giải pháp 5:Cập nhật .NET Framework
Cần có phiên bản mới nhất của Framework “.NET” để mọi thứ hoạt động trơn tru. Do đó, trong bước này, chúng tôi sẽ tải xuống phiên bản mới nhất từ trang web và cài đặt nó. Vì điều đó:
- Điều hướng đến liên kết này để tải xuống thiết lập.
- Thực thi “ .exe ”Để bắt đầu quá trình cài đặt.
- Theo dõi hướng dẫn trên màn hình để cài đặt ứng dụng trên máy tính của bạn.
- Kiểm tra để xem sự cố vẫn tiếp diễn sau khi hoàn tất cài đặt.