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

GraphServiceClient调用Microsoft Search API时Beta命名空间报错求助

解决Microsoft Graph Beta Search API编译错误的方案

问题原因

Microsoft Graph SDK v5.x将正式版API和Beta版API拆分为两个独立的NuGet包,你当前仅安装了正式版的Microsoft.Graph包,缺少Beta版对应的Microsoft.Graph.Beta包,因此无法识别Microsoft.Graph.Beta命名空间下的类型。

解决步骤

1. 安装Beta版Graph SDK NuGet包

根据你的包管理工具选择对应命令安装:

  • Package Manager Console:
    Install-Package Microsoft.Graph.Beta
    
  • .NET CLI:
    dotnet add package Microsoft.Graph.Beta
    

注意:若项目同时需要正式版和Beta版API,需明确区分命名空间;若仅使用Beta版,可卸载原Microsoft.Graph包避免冲突。

2. 调整代码中的命名空间与客户端实例

  • 添加Beta版相关命名空间引用:
    using Microsoft.Graph.Beta;
    using Microsoft.Graph.Beta.Models;
    using Microsoft.Graph.Beta.Search;
    using Azure.Identity;
    
  • 使用Beta版GraphServiceClient(Beta版客户端默认指向https://graph.microsoft.com/beta/,无需手动指定baseUrl):
    var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
    

3. 修正请求体类型引用

通过已引入的命名空间,将Microsoft.Graph.Beta.Search.Query.QueryPostRequestBody简化为QueryPostRequestBody即可。

修改后的完整代码

using Microsoft.Graph.Beta;
using Microsoft.Graph.Beta.Models;
using Microsoft.Graph.Beta.Search;
using Azure.Identity;
using System.Collections.Generic;

var ApplicationClientID = Environment.GetEnvironmentVariable("AZ_APPLICATION_CLIENT_ID");
var ApplicationClientSecret = Environment.GetEnvironmentVariable("AZ_CLIENT_SECRET");
var AzureTenantID = Environment.GetEnvironmentVariable("AZ_TENANT");

string[] scopes = new[] { "https://graph.microsoft.com/.default" };

var options = new ClientSecretCredentialOptions
{
    AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};

var clientSecretCredential = new ClientSecretCredential(
    AzureTenantID, ApplicationClientID, ApplicationClientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

// MS SEARCH API逻辑
var requestBody = new QueryPostRequestBody
{
   Requests = new List<SearchRequest>
  {
      new SearchRequest
          {
          EntityTypes = new List<EntityType?>
          {
              EntityType.DriveItem,
          },
          Query = new SearchQuery
          {
              QueryString = "some search criteria",
          },
          From = 0,
          Size = 35,
          QueryAlterationOptions = new SearchAlterationOptions
          {
              EnableSuggestion = true,
              EnableModification = true,
          },
      },
  },
};
var result = await graphClient.Search.Query.PostAsync(requestBody);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 02:52:45