使用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.GraphNuGet包 - 若坚持使用旧版SDK(v4),需额外安装
Microsoft.Graph.Auth包(DelegateAuthenticationProvider出自该包),但推荐升级到v5以获得官方长期支持
内容的提问来源于stack exchange,提问作者user19299143
相关产品推荐
相关产品推荐

