2016-06-08 9 views
5

Ich erstelle gerade eine neue Windows 8.1 App, um diesen Fehler zu testen. Die App hat nur eine Funktion:HttpClient.GetStringAsync (url) werfen "Die zugrunde liegende Verbindung wurde geschlossen: Beim Senden ist ein unerwarteter Fehler aufgetreten." 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; 
      } 
     } 

Es immer der Haken ist, die Eingabe und das Werfen „die zugrundeliegende Verbindung geschlossen wurde. Ein unerwarteter Fehler bei einer senden“ Ich fand eine Menge Fragen, die das erwähnen, aber keine Lösung funktionierte für mich, da dies eine Windows 8.1 Store App und keine ASP.NET App ist.

Der Uri, den ich benutze, öffnet sich im Browser und funktioniert sehr gut.

Ich habe sogar zu diesem Artikel: https://support.microsoft.com/en-us/kb/915599 aber keine Lösung. Hat jemand dieses Problem schon früher entdeckt?

Edit:

änderte ich die Methode 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

haben Sie andere URL-Endpunkte getestet? erhalten Sie denselben Fehler? –

+1

Veröffentlichen Sie die * full * -Ausnahme (dh verwenden Sie 'e.ToString()'), nicht nur die Nachricht der inneren Ausnahme. Überprüfen Sie auch den Statuscode der Antwort. Ist es ein 4xx, 5xx? Verwenden Sie Fiddler, um die unbearbeitete Anforderung und die Serverantwort zu erfassen. Wenn der Server abstürzt und nicht einmal eine vollständige Antwort zurückgibt, hat es keinen Sinn, den Client-Code zu ändern. –

+2

PS Wie rufst du diese Methode an? 'async void' bedeutet" Feuer und Vergessen ". Es kann nicht erwartet werden. Ihr Programm oder Test-Framework wird wahrscheinlich beendet, bevor der Test abgeschlossen ist. Verwenden Sie stattdessen 'async Task'. 'async void' sollte nur für Event-Handler oder ähnliche Methoden verwendet werden –

Antwort

2

Es stellt sich heraus zu verwenden, ich Windows.Net.Http wurde verwenden, die nicht TLS1.2 unterstützt. Windows.Web.Http tut.

+0

'System.Net.Http' –