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

如何用C#/.NET移除SharePoint网站集用户?现有代码无法运行

SharePoint网站集用户移除的C#修复方案

针对你提供的移除用户代码无法运行的问题,以下是问题分析和修复后的实现:

核心问题点

  1. 未调用SPWeb.Update()保存移除操作的更改
  2. 未检查用户是否存在,直接调用Remove可能抛出异常
  3. 多次重复获取RootWeb,可以复用已声明的对象
  4. 若在非POST上下文运行,需要开启AllowUnsafeUpdates避免权限拦截

修复后的代码

private void RemoveUser(string userLoginName)
{
    using (SPSite siteCollection = new SPSite("http://serverName"))
    {
        using (SPWeb rootWeb = siteCollection.RootWeb)
        {
            // 开启不安全更新,允许非POST上下文修改网站内容
            rootWeb.AllowUnsafeUpdates = true;
            
            SPUserCollection allUsers = rootWeb.AllUsers;
            // 先验证用户存在性,避免抛出异常
            if (allUsers.Contains(userLoginName))
            {
                allUsers.Remove(userLoginName);
                // 必须调用Update保存更改
                rootWeb.Update();
            }
            
            // 关闭不安全更新,恢复默认安全设置
            rootWeb.AllowUnsafeUpdates = false;
        }
    }
}

关键注意事项

  • 用户标识格式:必须传入完整的用户登录名,格式如domain\username,基于声明的环境需使用对应Claims格式(例如i:0#.w|domain\username)
  • 权限要求:代码运行上下文必须具备网站集管理员权限,否则会触发权限异常
  • 适用范围:此代码仅适用于SharePoint Server(经典本地部署),SharePoint Online需使用Microsoft Graph或SharePoint CSOM的User.DeleteObject()方法
  • 安全规范:操作完成后务必关闭AllowUnsafeUpdates,避免网站暴露安全风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:29:57