Ich habe eine Client-Server-App. Wpf - Web API Ich habe ein paar Probleme, da dies auf einer Maschine funktioniert, aber wenn ich auf eine andere Maschine umschalte, tut es das nicht.HttpClient Senden, aber keine Anfrage erhalten
public async Task<IEnumerable<T>> Get()
{
var result = (IEnumerable<T>)null;
//Gets to this line and does not throw exception
var response = await _httpClient.GetAsync(BaseApiAddress);
if (!response.IsSuccessStatusCode)
{
ThrowInvalidException(response);
}
var resultAsString = await response.Content.ReadAsStringAsync();
result = JsonConvert.DeserializeObject<IEnumerable<T>>(resultAsString);
return result;
}
API-Methode:
[HttpGet]
public virtual IEnumerable<T> Get()
{
var items = Repository.Get().ToArray();
return items;
}
und Repository:
public IQueryable<T> Get()
{
return _context.Set<T>();
}
ich zum api bekommen und es wird die Daten während des Debugging-Code durch sie die Daten haben und sehen aus, als ob Dort vervollständigt es die Methode auf der API. All dies besagt, dass es nie zur GetAsync-Methode zurückkehrt.
Ich habe hier eine Mauer getroffen und weiß wirklich nicht einmal, wo ich anfangen soll. Irgendwelche Vorschläge wären sehr hilfreich.
Sieht wie ein klassischer Fall von Deadlock aus, der durch den Synchronisierungskontext verursacht wird. Versuchen Sie 'var response = erwarten _httpClient.GetAsync (BaseApiAddress) .ConfigureAwait (false);' –
das war es! ich danke dir sehr! – JamTay317
Seien Sie vorsichtig, mit configureAwait, um den Deadlock zu beheben ist ein Hack und wird nicht in jeder Situation funktionieren, ist es besser, nur keine asynchronen Anrufe zu blockieren. – Crowcoder