Следующий код работает в консольном приложении.
public Boolean Graph_IsMemberOfGroup(string Parm_AzureUserID, string Parm_GroupID) {
Boolean Lcl_ReturnValue = false;
Task<string> Lcl_Response = GraphPriv_IsMemberOfGroup(Parm_AzureUserID, Parm_GroupID);
if (Lcl_Response.Result != null) {
Lcl_ReturnValue = Lcl_Response.Result.Contains(Parm_GroupID);
}//end if
return (Lcl_ReturnValue);
}
private async Task<string> GraphPriv_IsMemberOfGroup(string Parm_AzureUserID, string Parm_GroupID) {
string Lcl_Returnvalue = null;
var Lcl_Uri = "https://graph.windows.net/CleMetroSchools.onmicrosoft.com/users/" + Parm_AzureUserID.Trim() + "/checkMemberGroups?api-version=1.6";
string Lcl_RequestBody = @"{""groupIds"": [""" + Parm_GroupID.Trim() + @"""]}";
Global_HttpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Global_Token.Result);
HttpResponseMessage Lcl_PostResult = await Global_HttpClient.PostAsync(Lcl_Uri, new StringContent(Lcl_RequestBody, Encoding.UTF8, "application/json"));
if (Lcl_PostResult.Content != null) {
Lcl_Returnvalue = await Lcl_PostResult.Content.ReadAsStringAsync();
}//end if
return Lcl_Returnvalue;
}
Я использую вызов
if (Graph_IsMemberOfGroup(CurrentUser,Group)){
Проблема, с которой я сталкиваюсь, заключается в том, что когда я использую тот же код впростое (не MVC) веб-приложение ASP.net.Система не ожидает завершения GraphPriv_IsMemberOfGroup, прежде чем попытается обработать if (Lcl_Response.Result! = Null) {
Все, что я до сих пор пробовал с помощью wait, либо не скомпилируется, либо будет ждать вечно.Я искал несколько дней, и все, что мне удалось сделать, это путешествовать глубже по кроличьей норе путаницы.