我正在创建用于管理Active Directory的Web应用程序。我想在某个容器中创建一个组。

var groups = new List<Models.Group>();

PrincipalContext ctx =
 new PrincipalContext(ContextType.Domain, domain, container, userName, password);

GroupPrincipal oGroupPrincipal = new GroupPrincipal(ctx);
oGroupPrincipal.Description = mGroup.GroupName;
oGroupPrincipal.GroupScope = mGroup.GroupScope;
oGroupPrincipal.IsSecurityGroup = mGroup.IsSecurity;
oGroupPrincipal.Save();


但我收到以下错误:


  无法将类型'string'隐式转换为
  System.DirectoryServices.AccountManagement.GroupScope?”


我不确定如何处理。当它是列表中的对象字符串时,应如何将GroupScope转换为对象GroupScope?

我也收到此错误:


  在保存之前,必须在此存储中将SamAccountName或Name分配给新创建的Principal对象。

最佳答案

组作用域是一个具有局部,全局和通用值的枚举,似乎您尚未转换传入的值。

尝试将其设置为静态值:

oGroupPrincipal.GroupScope = System.DirectoryServices.AccountManagement.GroupScope.Local;


如果这样可以清除错误,请尝试解析您的传入字符串:

oGroupPrincipal.GroupScope = (System.DirectoryServices.AccountManagement.GroupScope)Enum.Parse(typeof(System.DirectoryServices.AccountManagement.GroupScope),value);

10-06 12:53