Sharepoint:抛出异常的SPweb.Groups.GetByName(groupName)

时间:2014-05-22 09:13:22

标签: c# .net sharepoint sharepoint-2013

我正在尝试以编程方式创建一个新的SharePoint组(使用.Net),为此我使用以下C#代码

                //greate group with no users:

                web.SiteGroups.Add(groupName, groupOwner, null, description);
                //Parameters are defined earlier in the code such as:
                //   string groupName
                //   SPUser groupOwner
                //   string description

                web.Update();
                SPGroup newGroup = web.Groups.GetByName(groupName);

创建效果很好,但是当我尝试访问该组时,会抛出异常,说“#34;无法找到组。”#34; 无法找到该组的原因是什么以及如何解决此问题(我需要访问该组以获取更多代码)?如果我在“人员和组”下检查SharePoint,则该组就在那里。

感谢任何帮助,谢谢。

3 个答案:

答案 0 :(得分:3)

试试这个:SPGroup oGroup = web.SiteGroups [groupName];

答案 1 :(得分:2)

我认为,如果该组不存在,Aanchal的代码将抛出异常。

请检查此代码段。我可以检查是否存在一个组:

function shutd()
{
  echo "mySuperSecurePassword" | sudo -S shutdown -h now
}    

要使此代码正常工作,您需要在代码中添加string nameOfGroupToCheck = "Test Group"; if (spWeb.Groups.OfType<SPGroup>().Where(g => g.Name == nameOfGroupToCheck).Count() > 0) { ... } 命名空间:

System.Linq

答案 2 :(得分:0)

  

找不到该群组的原因是什么

之所以会这样,是因为Groups属性仅包含您在web范围内授予了任何类型的权限的组。

  

我该如何解决

您应该改用SiteGroups。此属性包含添加到web所在的网站集中的所有组。还有,您新创建的组。

您的代码应该与GetByName相同,但要警告,如果您在其他地方使用它,则不确定该组是否存在,如果该组不存在,则会引发异常。

如果您需要这样做,并且不想添加try / catch子句,也不要使用System.Linq,则可以执行以下操作:

SPGroupCollection groups = web.SiteGroups.GetCollection(new string[] { groupName });                    
SPGroup myGroup = groups.Count == 0 ? null : groups[0];

if (myGroup != null)
{
    // ...
}