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

使用GraphServiceClient读取Microsoft 365邮件时遇CS0246/CS1061错误求助

问题原因及解决方案

你的错误源于代码沿用了Microsoft Graph SDK旧版(v4及以下)的写法,但当前使用的是v5+版本——该版本对认证方式和请求API做了重大调整:

  • DelegateAuthenticationProvider 在v5中已被移除
  • Request() 方法在v5中不再存在,请求写法被简化

修复步骤

1. 替换认证方式

用BearerTokenAuthenticationProvider替代旧的DelegateAuthenticationProvider,这是v5中处理Bearer令牌的简洁方式。

2. 调整请求代码

移除.Request()调用,直接通过链式调用完成查询。

修复后的完整代码

using Microsoft.Graph;
using Microsoft.Graph.Models;
using System;
using System.Threading.Tasks;
using System.Web;

namespace GraphTest.Helpers
{
    public class GraphHelper
    {
        public static async Task<CachedUser> GetUserDetailsAsync(string accessToken)
        {
            // 初始化认证提供者
            var authProvider = new BearerTokenAuthenticationProvider(accessToken);
            var graphClient = new GraphServiceClient(authProvider);

            // v5中无需调用.Request(),直接链式构建请求
            var user = await graphClient.Me
                .Select(u => new
                {
                    u.DisplayName,
                    u.Mail,
                    u.UserPrincipalName
                })
                .GetAsync();

            return new CachedUser
            {
                Avatar = string.Empty,
                DisplayName = user.DisplayName,
                Email = string.IsNullOrEmpty(user.Mail) ? user.UserPrincipalName : user.Mail
            };
        }
    }

    // 确保CachedUser类已定义
    public class CachedUser
    {
        public string Avatar { get; set; }
        public string DisplayName { get; set; }
        public string Email { get; set; }
    }
}

额外注意事项

  • 确保已安装最新版的Microsoft.Graph NuGet包
  • 若坚持使用旧版SDK(v4),需额外安装Microsoft.Graph.Auth包(DelegateAuthenticationProvider出自该包),但推荐升级到v5以获得官方长期支持

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:20:12