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

如何使用C#和.NET移除Redis缓存的用户分配托管标识(报错解决)

解决Redis缓存移除所有用户分配托管标识失败的问题

要将Redis缓存从托管身份认证切换回连接字符串认证,彻底移除所有用户分配的托管标识,你需要修改代码中身份类型的设置:

  • 将ManagedServiceIdentityType从UserAssigned改为None——因为当身份类型为UserAssigned时,Azure要求必须至少保留一个用户分配标识,不允许全部移除;只有将类型设为None,才能清空所有关联的用户分配身份。

修正后的代码如下:

// 创建类型为None的托管身份配置,彻底移除所有托管身份关联
ManagedServiceIdentity managedIdentity = 
    new ManagedServiceIdentity(ManagedServiceIdentityType.None);

RedisPatch patch = new RedisPatch()
{
   Identity = managedIdentity
};

RedisResource resource = redisCollection.GetAsync(clusterName).GetAwaiter().GetResult();
resource.UpdateAsync(WaitUntil.Completed, patch).GetAwaiter().GetResult();

另外注意:原代码中使用GetResult()可能会导致死锁问题,建议改用GetAwaiter().GetResult(),这是更安全的同步调用异步方法的方式。

错误分析:你遇到的BadRequest错误核心原因是,当身份类型指定为UserAssigned时,Azure Redis服务不允许移除所有用户分配标识,必须至少保留一个;只有将身份类型切换为None,才允许完全清空托管身份配置,从而切换回连接字符串认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 11:54:53