Sharepoint: SPweb.Groups.GetByName (groupName) выбрасывает исключение

1

Я пытаюсь создать новую группу SharePoint программно (используя.Net), для этого я использую следующий код С#

                //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 под людьми и группами, то группа существует.

Любая помощь приветствуется, спасибо.

Теги:
sharepoint
sharepoint-2013

3 ответа

3
Лучший ответ

Попробуйте это: SPGroup oGroup = web.SiteGroups [groupName];

2

Я думаю, что код Aanchal выдаст исключение, если группа не существует.

Проверьте этот фрагмент кода. Это работало отлично для меня, чтобы проверить, существует ли группа:

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

Чтобы этот код работал правильно, вам нужно добавить пространство имен System.Linq в свой код:

using System.Linq;
0

По какой причине группу не найти

Это происходит потому, что свойство Groups содержит только группы, которым вы предоставили какие-либо разрешения в web области.

Как я могу это исправить

Вы должны использовать SiteGroups вместо этого. Это свойство содержит все группы, добавленные в коллекцию web находится ваш web. Кроме того, ваша недавно созданная группа.

Ваш код должен быть в порядке с GetByName, но GetByName, что если вы используете его где-то еще, вы не уверены, что группа существует, она может вызвать исключение, если группа не существует.

Если вам это нужно и вы не хотите добавлять предложение try/catch и не использовать System.Linq, вы можете сделать что-то вроде:

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню