2017-08-04 3 views
0

Ich erstelle ein NuGet-Paket, um Bilder von einer Online-API abzurufen. Ich benutze. NetStandard 1.4 und System.Net.Http Version 4.3.2. Jedes Mal, wenn ich die Login-Methode anrufe, um ein Token für den Zugriff auf die API zu erhalten, kehrt der HTTP-Aufruf nie zurück und bleibt nur hängen, bis die Task-Abbruch-Ausnahme aufgrund eines Zeitlimits auftritt. Ich habe mehrere Lösungen ausprobiert, die ich online gefunden habe, z. B. um sicherzustellen, dass kein .Result oder .Wait() vor dem Async-Aufruf vorhanden ist und es keine in meinem Test gibt. Ich habe auch versucht, eine falsche URL zu verwenden, und der Anruf bleibt weiterhin hängen und sagt nicht, dass die URL nicht existiert..NetStandard Http SendAsync gibt nie zurück

Ich habe den wichtigsten http Aufruf unten veröffentlicht. Jede Hilfe, warum dies hängt, würde sehr geschätzt werden.

HttpRequestMessage requestMessage = new HttpRequestMessage(); 
requestMessage.RequestUri = new Uri($"{BaseUrl}/login"); 
requestMessage.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue(HttpContentType.JSON)); 
requestMessage.Method = HttpMethod.Post; 
requestMessage.Content = new StringContent(JsonConvert.SerializeObject(values), Encoding.UTF8, HttpContentType.JSON); 

using (HttpClient httpClient = new HttpClient()) 
{ 
    using (HttpResponseMessage response = await httpClient.SendAsync(requestMessage)) 
    { 
     if (response.IsSuccessStatusCode == true) 
     { 
      // Do work 
     } 
    } 
} 

Der BaseUrl-Wert und der Pfad für die Website ist korrekt und ich habe das überprüft. Auch habe ich den gleichen Link und alle Informationen verwendet, die ich in Postman senden muss, um zu überprüfen, dass ich die richtigen Informationen verwende.

Ich habe versucht, dies zu testen mit MSTest, einem Konsolenprojekt und einem WPF-Projekt mit einem Button und Click-Ereignis, um diese Methode auszulösen. Jeder hängt Methode und wird nie die

weitergegeben
using (HttpResponseMessage ... 
+0

Haben Sie diese überprüft https://stackoverflow.com/questions/19704432/await-httpclient-sendasynchttpcontent-isnon-reponsive, https://stackoverflow.com/questions/12933090/async-await-with- configureawaits-continueoncapturedcontext-Parameter-und-synchr –

+0

Ja, ich habe diese beiden Beiträge bereits gefunden und habe die Lösungen ohne Glück versucht ... – CraftyCoder

+0

Kannst du 'http: // example.com' drücken? Wenn nein, liegt das Problem wahrscheinlich nicht bei 'HttpClient'. Es könnte sein, dass der Server gerade nicht reagiert. –

Antwort

0

ich diese eine Weile zurück, herausgefunden, aber es passiert eine Einstellung auf meinem Router sein. Ich verwende einen Apple Airport Extreme und die IPv6-Einstellung wurde auf "Automatisch" gesetzt. Ich änderte es in "Nur Link-lokal" und alle meine HTTP-Anrufe funktionierten korrekt und reagierten sehr schnell.