2016-06-08 20 views
5

Tôi đang tạo một ứng dụng Windows 8.1 mới chỉ để thử nghiệm lỗi này mà tôi đang nhận được. Ứng dụng chỉ có một chức năng:HttpClient.GetStringAsync (url) ném "Kết nối cơ bản đã bị đóng: Đã xảy ra lỗi không mong muốn khi gửi". Windows 8.1 C#

private async void TestMethod() 
     { 
      try 
      {      
       HttpClient httpClient = new HttpClient(); 
       HttpResponseMessage response = await httpClient.GetAsync("https:// url ");      
      } 
      catch (HttpRequestException e) 
      { 
       string s = e.InnerException.Message; 
      } 
     } 

Nó luôn luôn tham gia đánh bắt và ném "Kết nối tiềm ẩn đã được đóng cửa: Một lỗi không mong muốn xảy ra trên một gửi." Tôi tìm thấy rất nhiều câu hỏi đề cập đến nhưng không có giải pháp làm việc cho tôi vì đây là một Windows 8.1 Store App không phải là một ứng dụng ASP.NET.

Uri tôi đang sử dụng sẽ mở trong Trình duyệt và hoạt động rất tốt.

Tôi thậm chí còn có bài viết này: https://support.microsoft.com/en-us/kb/915599 nhưng không có giải pháp. Bất cứ ai đã encoutered vấn đề này trước khi?

Edit:

tôi đã thay đổi phương thức sử dụng async Task

 
System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host 
    at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult) 
    at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult) 
    --- End of inner exception stack trace --- 
    at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult) 
    at System.Net.PooledStream.EndWrite(IAsyncResult asyncResult) 
    at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar) 
    --- End of inner exception stack trace --- 
    at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 
    at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResult ar) 
    --- End of inner exception stack trace --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at HttpRequestTestApp.MainPage.d__0.MoveNext() 
+0

bạn có thử bất kỳ điểm cuối url nào khác không? bạn có gặp lỗi tương tự không? –

+1

Đăng * ngoại lệ * đầy đủ (tức là sử dụng 'e.ToString()'), không chỉ là thông điệp của ngoại lệ bên trong. Đồng thời kiểm tra mã trạng thái của phản hồi. Có phải là 4xx, 5xx không? Sử dụng Fiddler để nắm bắt yêu cầu thô và phản hồi của máy chủ. Nếu máy chủ bị treo và thậm chí không trả về một phản hồi đầy đủ, không có điểm nào trong việc thay đổi mã máy khách. –

+2

PS Bạn gọi phương thức này bằng cách nào? 'async void' có nghĩa là" lửa và quên ". Nó không thể được chờ đợi. Chương trình hoặc khung kiểm tra của bạn có thể chấm dứt trước khi thử nghiệm hoàn tất. Thay vào đó, hãy sử dụng 'Tác vụ không đồng bộ'. Không được sử dụng 'async void' cho trình xử lý sự kiện hoặc các phương thức tương tự chỉ –

Trả lời

2

Hóa ra tôi đã sử dụng Windows.Net.Http mà không hỗ trợ TLS1.2. Windows.Web.Http.

+0

'System.Net.Http' –

Các vấn đề liên quan