Ứng dụng của tôi phải tải xuống một tập tin,đây là url .Ứng dụng này đã hoạt động tốt trong nhiều năm nhưng sau một thay đổi gần đây về phía nhà cung cấp, tôi nhận được thông báo "Kết nối cơ bản đã bị đóng: Đã xảy ra lỗi không mong muốn khi gửi".
Tôi đã đọc tất cả về nó trực tuyến nhưng không có cách khắc phục nào được đề xuất phù hợp với tôi.
重要说明:Mã này hoạt động trên Net Framework 4.6, nhưng tôi cần nó hoạt động trên 3.5.
Có ý tưởng gì không?
Mã này như sau:
var url = Uri mới(@"http://www.ezv.admin.ch/pdf_linker.php?doc=edecReceiptResponse_stylesheet_v_3_0");
var request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = false;
request.AllowAutoRedirect = true;
request.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36";
request.ProtocolVersion = HttpVersion.Version10;
gia hạn:stack:
System.Net.WebException: Kết nối cơ bản đã bị đóng: Đã xảy ra lỗi không mong muốn khi gửi ---> System.IO.IOException: Đã nhận được EOF hoặc 0 byte không mong muốn từ luồng truyền tải.
tại System.Net.FixedSizeReader.ReadPacket(Byte[] đệm, Int32 offset, Int32 count)
tại System.Net.Security.SslState.StartReadFrame(bộ đệm Byte[], Int32 readBytes, AsyncProtocolRequest asyncRequest)
tại System.Net.Security.SslState.StartReceiveBlob(Byte[] đệm, AsyncProtocolRequest asyncRequest)
tại System.Net.Security.SslState.ForceAuthentication(Boolean getFirst, Byte[] đệm, AsyncProtocolRequest asyncRequest)
tại System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lườiResult)
tại System.Threading.ExecutionContext.Run(ExecutionContext thực thiContext, gọi lại ContextCallback, trạng thái đối tượng)
tại System.Net.TlsStream.ProcessAuthentication (kết quả LazyAsyncResult)
tại System.Net.TlsStream.Write(bộ đệm Byte[], offset Int32, kích thước Int32)
tại System.Net.PooledStream.Write(Bộ đệm Byte[], offset Int32, kích thước Int32)
tại System.Net.ConnectStream.WriteHeaders(Boolean async)
bản cập nhật khác:Sử dụng Fiddler để kiểm tra kết nối tới httpS ứng dụng và so sánh phản hồi nhận được với net 4.6 (hợp lệ) và net 3.5 (không thành công):
- 4.6 Đã nhận được hai phản hồi, 5670 + 664785 byte
- 3.5 cũng nhận được hai phản hồi, mỗi phản hồi là 7 byte
Theo thực hiện testĐây là giao thức được hỗ trợ bởi www.ezv.admin.ch.
Giao thức
TLS 1.2 Có
TLS 1.1Không
TLS 1.0Không
SSL 3Không
SSL2Không
Bản nâng cấp phía máy chủ rất có thể đã nâng cấp giao thức bảo mật lên TLS 1.2 cụ thể.
Theo như sau bài báo .NET Framework 3.5 không hỗ trợ phiên bản này, các tùy chọn duy nhất của bạn là nâng cấp thư viện máy khách hoặc vá chúng, xem bên dưới.
.NET 3.5 trở xuống. TLS 1.2 không được hỗ trợ (*) và không có giải pháp thay thế nào. Nâng cấp ứng dụng của bạn lên phiên bản khung mới hơn.
Dưới đây là một số thông tin thêm về cách vá lỗi ứng dụng khách để thêm hỗ trợ.
PPS Như Christian Pop của Microsoft đã đề cập bên dưới, có một bản vá gần đây dành cho .NET 3.5 cho phép hỗ trợ TLS1.2.
Nhìn thấy:
KB3154518 – Bản tổng hợp độ tin cậy HR-1605 – NDP 2.0 SP2 – Win7 SP1/Win 2008 R2 SP1 KB3154519 – Bản tổng hợp độ tin cậy HR-1605 – NDP 2.0 SP2 – Win8 RTM/Win 2012 RTM KB3154520 – Bản tổng hợp độ tin cậy HR-1605 – NDP 2.0 SP2 – Win8.1RTM/Win 2012 R2 RTM KB3156421 -1605 HotFix Rollup thông qua Windows Update cho Windows 10.
Tôi là một lập trình viên xuất sắc, rất giỏi!