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下查看,组就在那里。
试试: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)
{
// ...
}