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

本文关键字:groupName 抛出异常 GetByName SPweb Groups Sharepoint | 更新日期: 2023-09-27 18:04:46

我正在尝试以编程方式(使用。net)创建一个新的SharePoint组,为此我使用以下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);

创建工作得很好,但是当我试图访问组时,抛出一个异常,说"组无法找到"。无法找到该组的原因是什么,我如何解决这个问题(我需要访问该组以获取进一步的代码)?如果我在SharePoint的People and Groups下查看,组就在那里。

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

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

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

请检查此代码片段。检查组是否存在对我来说很好:

string nameOfGroupToCheck = "Test Group";
if (spWeb.Groups.OfType<SPGroup>().Where(g => g.Name == nameOfGroupToCheck).Count() > 0)
{
...
}

要使此代码正常工作,您需要将System.Linq名称空间添加到代码中:

using System.Linq;

找不到组的原因是什么

这是因为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)
{
    // ...
}