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

使用Active Directory Graph Client删除AAD B2C用户时遇“Not Initialized”异常求助

解决Azure AD B2C删除用户时的"Not Initialized"异常

我来帮你分析下这个问题哈,你遇到的"Not Initialized"异常其实是因为直接实例化的User对象没有和ActiveDirectoryClient的上下文关联起来,咱们一步步说清楚:

首先看你原来的代码:

Uri servicePointUri = new Uri("https://graph.windows.net"); 
Uri serviceRoot = new Uri(servicePointUri, "xxxx.onmicrosoft.com"); 
var activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await GetAccessToken()); 
var myUser = new Microsoft.Azure.ActiveDirectory.GraphClient.User() { ObjectId = "63ca9c1d-2bd0-4a6b-8bf6-b850b16ed50b" }; 
await myUser.DeleteAsync(); 

问题原因

你直接new出来的User对象并没有被绑定到activeDirectoryClient的上下文里,Graph Client的实体对象(比如User)依赖客户端上下文提供的认证信息、请求管道等配置才能执行DeleteAsync这类操作。脱离上下文的对象内部没有初始化必要的操作环境,所以调用方法时就会抛出"Not Initialized"异常。

两种解决方法

方法一:先通过客户端获取用户实例再删除

这种方式最直接,先利用客户端的Users.GetByObjectId方法获取到已关联上下文的用户对象,再执行删除:

Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, "xxxx.onmicrosoft.com");
var activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await GetAccessToken());

// 先通过ObjectId获取已关联上下文的用户实例
var myUser = await activeDirectoryClient.Users.GetByObjectId("63ca9c1d-2bd0-4a6b-8bf6-b850b16ed50b").ExecuteAsync();
await myUser.DeleteAsync();

方法二:手动将用户对象附加到客户端上下文

如果你不想先查询用户,也可以手动把new出来的用户附加到客户端上下文,再执行删除操作:

Uri servicePointUri = new Uri("https://graph.windows.net");
Uri serviceRoot = new Uri(servicePointUri, "xxxx.onmicrosoft.com");
var activeDirectoryClient = new ActiveDirectoryClient(serviceRoot, async () => await GetAccessToken());

var myUser = new Microsoft.Azure.ActiveDirectory.GraphClient.User() { ObjectId = "63ca9c1d-2bd0-4a6b-8bf6-b850b16ed50b" };
// 将用户对象附加到客户端的"users"集合上下文
activeDirectoryClient.Context.AttachTo("users", myUser);
// 标记对象为待删除状态
activeDirectoryClient.Context.DeleteObject(myUser);
// 提交上下文变更完成删除
await activeDirectoryClient.Context.SaveChangesAsync();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:11:17