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

调用Microsoft Graph API时出现set_Method方法缺失报错如何解决

问题原因

该报错为Microsoft Graph SDK依赖包版本不兼容导致,核心触发逻辑如下:

  • 代码中使用的DelegateAuthenticationProvider属于已废弃的Microsoft.Graph.Auth包,仅适配v3及以下版本的Microsoft Graph SDK,与高版本Graph主包、Microsoft.Graph.Core包的API定义不匹配
  • 不同版本的Microsoft.Graph和Microsoft.Graph.Core包底层BaseRequest类的Method属性定义存在差异,旧版本包含公共setter方法,新版本已修改该属性的访问性或完全移除该定义,运行时加载的程序集版本与编译时引用版本不一致时,就会抛出方法找不到的异常
  • 项目同时引用的SharePoint客户端组件也可能传递引用了不同版本的Graph相关依赖,进一步加剧版本冲突

解决方案

方案1:统一依赖版本(兼容现有代码写法)

  1. 卸载项目中所有Microsoft Graph相关包,包括Microsoft.Graph、Microsoft.Graph.Core、Microsoft.Graph.Auth
  2. 统一安装匹配的v4.x稳定版本,推荐版本组合:
    • Microsoft.Graph 4.54.0
    • Microsoft.Graph.Core 2.0.15
  3. 清理项目bin、obj文件夹,重新编译运行即可

方案2:升级到v5+版本Graph SDK(推荐)

v5+版本已完全移除Request()方法,身份认证改用Azure.Identity包实现,代码调整如下:

  1. 安装最新稳定版Microsoft.Graph、Azure.Identity包
  2. 调整GetGraphServiceClient方法实现:
using Azure.Identity;
using Microsoft.Graph;

public GraphServiceClient GetGraphServiceClient()
{
    var scopes = new[] { "https://graph.microsoft.com/.default" };
    var options = new ClientSecretCredentialOptions
    {
        AuthorityHost = AzureAuthorityHosts.AzurePublicCloud
    };
    // 对应你原先的认证逻辑,此处以客户端凭证流为例,可按需替换为其他认证流
    var clientSecretCredential = new ClientSecretCredential(
        "租户ID", 
        "客户端ID", 
        "客户端密钥", 
        options);
    return new GraphServiceClient(clientSecretCredential, scopes);
}
  1. 调整获取用户的代码:
public async Task<IList<User>> GetUsers()
{
    GraphServiceClient graphClient = GetGraphServiceClient();
    var users = await graphClient.Users.GetAsync();
    return users.Value;
}

额外排查项

如果调整版本后仍报错,检查项目的packages.config(.NET Framework项目)或.csproj文件,删除冗余的多版本Graph包引用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:15:03