首页 > 解决方案 > “无法识别的 lambda 表达式。” 使用 Microsoft.Graph 时

问题描述

我正在尝试从 Azure Active Directory 中提取用户数据。

我正在从 https://github.com/microsoftgraph/msgraph-training-aspnetmvcapp/blob/main/Demos/03-add-msgraph/graph-tutorial/Helpers/GraphHelper.cs找到的示例应用程序调整我的代码

我的功能目前看起来像:

Public Async Function GetUserDetailsAsync(ByVal accessToken As String) As Task(Of CachedUser)
    Dim graphClient = New GraphServiceClient(New DelegateAuthenticationProvider(Function(requestMessage)
                                                                                    requestMessage.Headers.Authorization = New AuthenticationHeaderValue("Bearer", accessToken)
                                                                                    Return Task.FromResult(0)
                                                                                End Function))

    Dim user = Await graphClient.Me.Request().Select(Function(u) New With {u.DisplayName}).GetAsync()

    Return New CachedUser With {
        .Avatar = String.Empty,
        .DisplayName = user.DisplayName,
        .Email = If(String.IsNullOrEmpty(user.Mail), user.UserPrincipalName, user.Mail)
    }
End Function

问题是它与GetAsync(). 我收到消息异常Unrecognized lambda expression. Parameter name: selectExpression

我应该如何写选择?如果这是一个错误,是否有人有解决方法?

标签: vb.netlambdaazure-ad-graph-api

解决方案


关于这个问题,请参考以下代码

Dim graphClient = New GraphServiceClient(New DelegateAuthenticationProvider(Function(requestMessage)
                                                                                        requestMessage.Headers.Authorization = New AuthenticationHeaderValue("Bearer", accessToken)
                                                                                        Return Task.CompletedTask
                                                                                    End Function))
        Dim user = Await graphClient.[Me].Request().[Select]("displayName").GetAsync()
        Console.WriteLine(user.DisplayName)

在此处输入图像描述


推荐阅读