Добрый день.
Подскажите куда копать со следующей проблемой.
Ниже код который выдергивает пользователей из определенной группы с сервера sharepinta. Но возникает проблема с обычными пользователями у них вылетает ошибка: нет доступа
под админскими правами нет проблем.
Я так понимаю нужно сделать олицетворение или я неправ? может ткнете носом в нормальный пример.
site = new SPSite(cHTTP_SHAREPOINT_SERVER);
SPWeb web;
web = site.OpenWeb();
using (SPWeb oWebsite = web)
{
SPGroupCollection collGroups = oWebsite.Groups;
foreach (SPGroup oGroup in collGroups)
{
if (oGroup.Name == aNameGroup)
{
foreach (SPUser oUser in oGroup.Users)
{
result.Add(new ListItem(oUser.Name,oUser.Email));
}
}
}
}
Здравствуйте, Dosent, Вы писали:
D>Добрый день.
D>Подскажите куда копать со следующей проблемой.
D>Ниже код который выдергивает пользователей из определенной группы с сервера sharepinta. Но возникает проблема с обычными пользователями у них вылетает ошибка: нет доступа
D>под админскими правами нет проблем.
D>Я так понимаю нужно сделать олицетворение или я неправ? может ткнете носом в нормальный пример.
D>D> site = new SPSite(cHTTP_SHAREPOINT_SERVER);
D> SPWeb web;
D> web = site.OpenWeb();
D> using (SPWeb oWebsite = web)
D> {
D> SPGroupCollection collGroups = oWebsite.Groups;
D> foreach (SPGroup oGroup in collGroups)
D> {
D> if (oGroup.Name == aNameGroup)
D> {
D> foreach (SPUser oUser in oGroup.Users)
D> {
D> result.Add(new ListItem(oUser.Name,oUser.Email));
D> }
D> }
D> }
D> }
D>
все решил:
решение от системной записи
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPSite site;
site = new SPSite(cHTTP_SHAREPOINT_SERVER);
SPWeb web;
web = site.OpenWeb();
using (SPWeb oWebsite = web)
{
SPGroupCollection collGroups = oWebsite.Groups;
foreach (SPGroup oGroup in collGroups)
{
if (oGroup.Name == aNameGroup)
{
foreach (SPUser oUser in oGroup.Users)
{
result.Add(new ListItem(oUser.Name, oUser.Email));
}
}
}
}
});
Здравствуйте, Dosent, Вы писали:
D>решение от системной записи
D>D> SPSecurity.RunWithElevatedPrivileges(delegate()
D> {
D> SPSite site;
D> site = new SPSite(cHTTP_SHAREPOINT_SERVER);
D> SPWeb web;
D> web = site.OpenWeb();
D> using (SPWeb oWebsite = web)
D> {
D> SPGroupCollection collGroups = oWebsite.Groups;
D> foreach (SPGroup oGroup in collGroups)
D> {
D> if (oGroup.Name == aNameGroup)
D> {
D> foreach (SPUser oUser in oGroup.Users)
D> {
D> result.Add(new ListItem(oUser.Name, oUser.Email));
D> }
D> }
D> }
D> }
D> });
D>
Можно ещё вот так
using (SPSite site = new SPSite(siteID, SPUserToken.SystemAccount))
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>
Здравствуйте, Dosent, Вы писали:
D>D> SPSecurity.RunWithElevatedPrivileges(delegate()
D> {
D> SPSite site;
D> site = new SPSite(cHTTP_SHAREPOINT_SERVER);
D> SPWeb web;
D> web = site.OpenWeb();
D> using (SPWeb oWebsite = web)
D> {
D> SPGroupCollection collGroups = oWebsite.Groups;
D> foreach (SPGroup oGroup in collGroups)
D> {
D> if (oGroup.Name == aNameGroup)
D> {
D> foreach (SPUser oUser in oGroup.Users)
D> {
D> result.Add(new ListItem(oUser.Name, oUser.Email));
D> }
D> }
D> }
D> }
D> });
D>
Данный код будет выполнен от имени учетной записи пула приложения, а не от системной. Если пул крутится под системной учетной записью, то таки да, будут привилегии системной учетной записи. Но в идеале системная учетная запись и учетная запись пула приложений должны быть разными.
PS: Зачем так?
web = site.OpenWeb();
using (SPWeb oWebsite = web){}
PPS: SPSite тоже нужно диспозить.