私はクライアントサーバーアプリケーションを持っています。 Wpf - Web apiこれは1台のマシンで動作しているので少し問題がありますが、別のマシンに切り替えると問題はありません。HttpClient要求を送信したが受信していない
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メソッド:
[HttpGet]
public virtual IEnumerable<T> Get()
{
var items = Repository.Get().ToArray();
return items;
}
とリポジトリ:
public IQueryable<T> Get()
{
return _context.Set<T>();
}
私は、APIを取得し、それがデータを持っており、あるかのように見えるコードをデバッグしながら、データを取得しますそこではAPI上のメソッドを完了します。そのすべてが、GetAsyncメソッドに返されることは決してありませんでした。
私はここでレンガの壁に当たっていて、実際にはどこから見て始めるべきか分からない。どんな提案も非常に役に立ちます。
同期コンテキストに起因するデッドロックの古典的なケースのように見えます。 'var response = await _httpClient.GetAsync(BaseApiAddress).ConfigureAwait(false);' –
それを試してみてください!どうもありがとうございます! – JamTay317
デッドロックがハックであることを修正するためにconfigureAwaitを使用し、あらゆる状況で動作しないように注意してください。非同期呼び出しをブロックしない方が良いです。 – Crowcoder