2017-04-11 6 views
-1

이 코드는 .Net Core에서 작동했습니다. 우리는 핵심이 바로 지금 우리에게 가장 적합하지 깨달았다, 그래서 나는 닷넷 4.5.2에서 리팩토링 된 나는"HTTPClient.GetAsync를 기다리고 있습니다"

HttpResponseMessage response = await client.GetAsync(passedlURI);

를 호출 할 때 그것은 단지 무기한으로 생각하고 있습니다. API의 로컬 호스트 버전에서이를 지적하고 API가 헤더를 읽고 올바르게 데이터를 반환했음을 확인했습니다. Postman을 사용하여 라이브 API와 로컬 호스트 API가 올바른 데이터를 보내고 있는지 확인했습니다.

enter image description here

+0

이 코드가 컴파일되는지 궁금합니다 ... 어쨌든!? 더 나아가이 아키텍처는 나에게 의미가 없습니다. – DotNetDev

+0

'public string CallAPI'를'public async Task CallAPI'로 바꿀 수 있습니까? – mason

+1

@DotNetDev'async Task' 메서드에서 return 문이 필요 없습니다. '비동기 작업 '. – mason

답변

2

것은 당신의 await의 각각 .ConfigureAwait(false)를 사용해야합니다 : 여기에 지금까지 내 코드입니다. 현재 동기화 컨텍스트에서 내부적으로 대기중인 작업을 동 기적으로 대기하는 것은 ASP.NET의 교착 상태의 원인입니다.

await GetAPIAsync(); 

마 : 대신 예를 들어

물론

await GetAPIAsync().ConfigureAwait(false); 

, 당신이 시작하는 작업에 동 기적으로 대기하지 않은 경우 그것은 더 나은 것입니다.

ASP.NET Core에서 사용자 지정 동기화 컨텍스트를 사용하지 않기 때문에 문제가 발생하지 않습니다.