You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#应用在Azure AD B2C租户中搜索用户遇问题求助

问题排查:按邮箱搜索用户功能无法正常运行

我参照已修复的ListUsers函数逻辑,实现按邮箱地址搜索用户的功能,但无法正常运行。在官方文档中没找到解决方案,且旧版AI不知道Graph SDK中.Request()已被移除。以下是编写的SearchUsers函数及参考的ListUsers函数,请求协助排查:

public static async Task SearchUsers()
{
    var scopes = new[] { "https://graph.microsoft.com/.default" };
    var tenantId = "...";
    var clientId = "...";
    var clientSecret = "...";

    ClientSecretCredential clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
    var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

    Console.Write("Enter user email address: ");
    string emailAddress = Console.ReadLine();

    Console.WriteLine($"Looking for user with email address '{emailAddress}'...");

    try
    {
        var users = await graphClient.Users
            .GetAsync(requestConfiguration =>
            {
                requestConfiguration.QueryParameters.Select = new string[] { "id", "displayName", "givenName", "surname", "businessPhones", "identities" };
                requestConfiguration.QueryParameters.Filter = $"identities/any(c:c/issuerAssignedId eq '{emailAddress}' and c/signInType eq 'emailAddress')";
            });

        if (users != null && users.Value.Any())
        {
            var user = users.Value.FirstOrDefault();
            if (user != null)
            {
                Console.WriteLine("------------------------");
                Console.WriteLine($"ID: {user.Id}");
                Console.WriteLine($"Display Name: {user.DisplayName}");
                Console.WriteLine($"Given Name: {user.GivenName}");
                Console.WriteLine($"Surname: {user.Surname}");
                Console.WriteLine($"Email: {emailAddress}");


                // Check if business phone numbers are available
                if (user.BusinessPhones != null && user.BusinessPhones.Any())
                {
                    Console.Write("Business Phones: ");
                    Console.WriteLine(string.Join(", ", user.BusinessPhones));
                }
                else
                {
                    Console.WriteLine("Business Phones: N/A");
                }

                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("No user found with the provided email address.");
            }
        }
        else
        {
            Console.WriteLine("No user found with the provided email address.");
        }
    }
    catch (Exception ex)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine($"Error: {ex.Message}");
        Console.ResetColor();
    }
}

参考的ListUsers函数

public static async Task ListUsers()
{
Console.WriteLine("Getting list of users...");

   var scopes = new[] { "https://graph.microsoft.com/.default" };
   var tenantId = "...";
   var clientId = "...";
   var clientSecret = "...";

   ClientSecretCredential clientSecretCredential = new ClientSecretCredential(tenantId, clientId, clientSecret);
   var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

   try
   {
       var users = await graphClient.Users.GetAsync((requestConfiguration) =>
       {
           requestConfiguration.QueryParameters.Select = new string[] { "Id", "displayName", "GivenName", "Surname", "BusinessPhones", "Identities"};
       });

       foreach (var user in users.Value)
       {
           // Extract email address from identities
           var emailAddress = user.Identities?.FirstOrDefault(i => i.SignInType == "emailAddress")?.IssuerAssignedId;

           // Skip user if no email address is found
           if (string.IsNullOrEmpty(emailAddress))
               continue;

           Console.WriteLine("------------------------");
           Console.WriteLine($"ID: {user.Id}");
           Console.WriteLine($"Display Name: {user.DisplayName}");
           Console.WriteLine($"Given Name: {user.GivenName}");
           Console.WriteLine($"Surname: {user.Surname}");
           Console.WriteLine($"Email: {emailAddress}");
           

           // Check if business phone numbers are available
           if (user.BusinessPhones != null && user.BusinessPhones.Any())
           {
               Console.Write("Business Phones: ");
               Console.WriteLine(string.Join(", ", user.BusinessPhones));
           }
           else
           {
               Console.WriteLine("Business Phones: N/A");
           }

           Console.WriteLine();
       }
   }
   catch (Exception ex)
   {
       Console.WriteLine($"Error listing users: {ex.Message}");
   }
}

内容的提问来源于stack exchange,提问作者ThomasLDev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 03:20:56