Cách khắc phục & lsquo; Một kết nối hiện tại đã bị máy chủ từ xa đóng lại & rsquo; Lỗi?

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 đã tạo ra một cuộc cách mạng cho 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ề lỗi “ một kết nối hiện có đã bị đóng bởi máy chủ từ xa ” trong 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à đưa 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.

  • Cách sử dụng TLS 1.1 / 1.0: 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ị khấu hao. TLS 1.2 là cách thực hiện khi chọn giao thức mà ứng dụng sử dụng.
  • Cryptography Disabled: 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.
  • Khuôn khổ “.NET” lỗi thời: Trong một số trường hợp nhất định, nếu Khung “.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 khuôn khổ “.NET” phải được cập nhật 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 Mật mã đã 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 ta sẽ bật Cryptography. Vì điều đó:

  1. Nhấn “ Windows ” + “ R ” để mở lời nhắc Chạy.
  2. Gõ vào “regedit” và nhấn “ Enter “.
  3. Đ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ó giá trị “ SchUseStrongCrypto ” trong ngăn bên phải.

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ .NETFramework \ v4.0.30319
  4. Trong ngăn bên phải, nhấp đúp vào tùy chọn “ SchUseStrongCrypto ” và nhập “ 1 ” làm dữ liệu Giá trị.
  5. 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 đó:

  1. Điều hướng đến thư mục gốc của trang web và nhấp chuột phải vào tệp “global.asax” .
  2. Chọn “ Xem ” từ danh sách.
  3. Phải có phương thức “ Application_Start ”, hãy thêm dòng mã sau vào phương thức đó
    if (ServicePointManager. SecurityProtocol. HasFlag (SecurityProtocolType. Tls12) == false) SecurityProtocolType. Tls12;              
  4. 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 một số phần tử 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 đó:

  1. Đảm bảo rằng bạn có lớp “ StateObjec t” với “ public byte [] buffer = new byte [1024], public Socket socket; “.
  2. Gọi hàm “ Nhận (Socket s) ” và gọi mã sau trong “ void NhậnCallback (IAsyncResult ar)
     SocketError errorCode ; int nBytesRec = socket . EndReceive ( ar , out errorCode ); if ( errorCode != SocketError . Success ) { nBytesRec = 0 ; } 
  3. 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 đó:

  1. Mở tệp “ .edmx ” của bạn và mở tệp “ .context.tt ” bên dưới tệp đó.
  2. Mở tệp “ .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 ! } 
  3. 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 đó:

  1. Điều hướng đến liên kết này để tải xuống thiết lập.
  2. Thực thi tệp “ .exe ” để bắt đầu quá trình cài đặt.
  3. Làm theo 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.
  4. Kiểm tra xem sự cố vẫn tiếp diễn sau khi hoàn tất cài đặt.