Wir haben eine Restful-Client-Sever-Umgebung und ich versuche, meinen Code zu debuggen, wo Client-Code wie folgt aussieht:Steuerung nicht zurück auf das erwartete WebClient kommt nach Async WebAPI Aufruf
await Client.DoWork(Id);
Während Server-Code aussieht wie folgt vor:
public virtual async Task<IActionResult> DoWork(long Id)
{
return Ok();
}
Bitte beachten Sie, dass der Kunde ein Webclient für den Dienst ist, die von https://github.com/swagger-api/swagger-codegen
Code automatisch generiert wird.
Der Punkt in automatisch generierten Code, der es nie wieder wie kommt sieht aus wie folgt:
var response_ = await client_.SendAsync(request_,
System.Net.Http.HttpCompletionOption.ResponseHeadersRead,
cancellationToken).ConfigureAwait(false);
Dies ist, wo die Steuer
- Eine Sache, die nicht hilfreich sein kann, ist weg oder Hier ist, dass die Service-Anrufe einen Proxy durchlaufen. Nicht sicher, ob das etwas ändert
Wenn Client-Aufruf der API ich sehen kann, es zu Return OK()
geht und ich in Fiddler sehen, dass es zurückgeben 200OK hat aber die Kontrolle kommt nie zurück Methode aufrufen. Wie kann ich das lösen?
Das bedeutet normalerweise Deadlock. Die Natur hängt von der Umwelt ab. Zum Beispiel könnte es sich bei Ihrem Client um eine UI-Anwendung (wie WPF oder Win Forms) oder eine asp.net-Anwendung handeln, und Sie tun etwas wie Task.Wait oder Tadk.Result irgendwo auf dem Stapel. – Evk
Es ist ein WebClient und wir verwenden Swagger mit 'ConfigureAwait (false)'. Ich dachte, dass es ausreichen sollte. – TeaLeave
Wenn Sie das von asp.net-Anwendung aufrufen - das obige gilt immer noch. Schwer zu sagen mehr ohne mehr Code und Informationen (was genau ist Client, wie es api nennt, was ist in diesem Client.DoWork und so weiter). – Evk