Azure AD에 연결하려고하는데이 코드를 사용하고 있습니다. 이해가 안프로세스를 죽일 때까지 대기합니다
try
{
var clientCredential = new ClientCredential(_clientId, _clientSecret);
var authContext = new AuthenticationContext(AuthUri + _tenant);
var authResult = await authContext.AcquireTokenAsync(GraphUri,clientCredential);
var authString = authResult.CreateAuthorizationHeader();
var client = new HttpClient();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = _requestUri,
};
request.Headers.Add("Authorization", authString);
HttpResponseMessage response = null;
await client.SendAsync(request).ContinueWith(taskWithMessage =>
{
response = taskWithMessage.Result;
});
return await response.Content.ReadAsStringAsync();
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
큰 문제는 실행이 처음 await를 도달 할 때 (var authResult = await authContext.AcquireTokenAsync(GraphUri,clientCredential);
) 프로세스가 간단하게 살해된다는 것이다. 예외는 발생하지 않으며 아무 것도 던지지 않습니다.
나는 실행 프로세스가 발생되는 예외 또는 경고 또는 무언가의 메시지없이 다시 살해 await client.SendAsync(request).ContinueWith(taskWithMessage...
때까지 계속
var authResult = authContext.AcquireTokenAsync(GraphUri,clientCredential);
var authString = authResult.Result.CreateAuthorizationHeader();
와 그 라인을 교체하십시오.
이 코드는 다른 프로젝트에서 잘 실행되지만 여기서는 작동하지 않습니다.
편집 :
static void ImportLicence()
{
InsertToDb();
}
public async void InsertoDb()
{
var x = await GetSP();
}
public async Task<Dictionary<ServicePlanViewModel, List<ServicePlanViewModel>>> GetSP()
{
var sp = await MakeRq();
}
public async Task<string> MakeRequest()
{
var authString = await GetAuth();
..........
return await response.Content.ReadAsStringAsync();
}
private async Task<string> GetAuth()
{
.....
var authResult = await authContext.AcquireTokenAsync(GraphUri, clientCredential);
return authResult.CreateAuthorizationHeader();
}
당신이'.ContinueWith'을 무시하고 단순히 사용할 수''async' await'을 모두 결합하여 문제가 반복되는지 확인하려고하지 않습니다. –
@AkashKava 같은 일이 발생합니다. 그 과정은 죽는다. – viktorfilim
@viktorfilim, 동기화 및 비동기 구현을 혼합합니다. 이 코드가 캡슐화 된 방법을 보여주십시오. – Nkosi