Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.net web应用程序中使用Microsoft Graph call时遇到问题_C#_Asp.net_Azure Ad Graph Api - Fatal编程技术网

C# 在.net web应用程序中使用Microsoft Graph call时遇到问题

C# 在.net web应用程序中使用Microsoft Graph call时遇到问题,c#,asp.net,azure-ad-graph-api,C#,Asp.net,Azure Ad Graph Api,以下代码在控制台应用程序中工作 public Boolean Graph_IsMemberOfGroup(string Parm_AzureUserID, string Parm_GroupID) { Boolean Lcl_ReturnValue = false; Task<string> Lcl_Response = GraphPriv_IsMemberOfGroup(Parm_AzureUserID, Parm_GroupID);

以下代码在控制台应用程序中工作

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;
    }
我遇到的问题是,当我在一个普通的非MVC ASP.net web应用程序中使用相同的代码时。系统不会等待GraphPriv_IsMemberOfGroup完成,然后再尝试处理if Lcl_响应。结果!=空的{

到目前为止,我用waits尝试过的任何东西要么不会编译,要么永远等待。
我已经搜索了几天,我所能做的就是深入混乱的兔子洞。

你在这里误用了异步/等待模型。你不应该寻找任务,你应该从等待的方法中寻找字符串:

public async Task<Boolean> Graph_IsMemberOfGroup(string Parm_AzureUserID, string Parm_GroupID) {
    Boolean Lcl_ReturnValue = false;
    string Lcl_Response = await GraphPriv_IsMemberOfGroup(Parm_AzureUserID, Parm_GroupID);
    return Lcl_Response.Result.Contains(Parm_GroupID);
}

异步方法返回一个包装在任务中的值,await关键字告诉代码等待该方法返回并展开响应。因此,如果异步方法返回任务,则您将使用字符串s=await method调用该方法。

如果完全相同的代码在ASP.NET应用程序中工作,那完全是运气使然。请看一看,您不是调用GraphPriv_IsMemberOfGroup时不要使用Wait…尝试在任务Lcl_Response=Wait GraphPriv_IsMemberOfGroup Parm_AzureUserID,Parm_GroupID中添加Wait。不过,在使用异步等待模式之前,您应该遵循@Stijn的建议,并尝试进行更多的研究和培训。我尝试了任务Lcl_Response=Wait GraphPriv_IsMemberOfGroupParm_AzureUserID,Parm_GroupID;但是得到编译错误,'Await'运算符只能在asysnc方法中使用。我已经读了又读了async和Await,但我仍然不确定该怎么办。请理解,我从8月份开始就一直在试图解决这个问题。我无法告诉你我看youtube v的时间IDEO和阅读网页试图找出如何做一件事。验证用户是否是广告组的成员。我所阅读的大部分内容要么已经过时,要么只有一些代码片段遗漏了很多重要部分。感谢您的回复。您提供的代码中存在的问题是,我在awa上遇到了编译错误错误CS4032“Acess”运算符只能在异步方法中使用。考虑用“AsiNC”修饰符标记该方法并将其返回类型改为“任务”。GraphTestSorry,错过了该位。您需要将GraceIsMeNefOfGRONE转换为异步方法。这使AcYNC/AWE框架。如果我把它变成A同步然后,相同的整体问题会升级到受保护的无效按钮1\u Clickobject sender,EventArgs e,我无法将其设置为异步:以便它等待任务完成。想知道这是否在web应用程序中实际完成。您使用的是什么平台/框架?您应该能够将事件处理程序设置为与我们一样异步谢谢,谢谢,谢谢!
public async Task<Boolean> Graph_IsMemberOfGroup(string Parm_AzureUserID, string Parm_GroupID) {
    Boolean Lcl_ReturnValue = false;
    string Lcl_Response = await GraphPriv_IsMemberOfGroup(Parm_AzureUserID, Parm_GroupID);
    return Lcl_Response.Result.Contains(Parm_GroupID);
}