SPSecurity.RunWithElevatedPrivileges未经授权的例外?

时间:2017-09-21 05:47:45

标签: sharepoint sharepoint-2010

我是否通过以下代码检查给定用户是否属于某个群组。我得到了

  未经授权的例外   (0X80070005)

我不明白为什么?我使用ChromeOptions option = ChromeOptions(); option.add_argument("--start-maximized"); ,为什么它会给我这个例外!?有人给我一个暗示吗?提前谢谢!

SPSecurity.RunWithElevatedPrivileges

1 个答案:

答案 0 :(得分:1)

您需要在提升的权限内创建SP Web的新实例。在当前的实现中,您将重用在当前用户上下文中运行的web对象。

因此,请根据您的要求尝试修改以下代码:

public bool IsUserInGroup(SPWeb web, string groupName, string user)
{
    try
    {
        bool returnValue = false;
        SPSecurity.RunWithElevatedPrivileges(() =>
        {       
            using(SPSite site = new SPSite(web.Site.ID))
            {
                using(SPWeb elevatedWeb = site.OpenWeb(web.ID))
                {
                    if (elevatedWeb.Groups.OfType<SPGroup>().Where(g => g.Name == groupName).Count() > 0)
                    {
                        SPGroup spGroup = elevatedWeb.Groups[groupName];
                        if (spGroup.Users.OfType<SPUser>().Where(u => u.LoginName.Equals(user)).Count() > 0)
                        {
                            returnValue = true;
                        }
                        else
                        {
                            returnValue = false;
                        }
                    }
                    else
                    {
                        returnValue = false;
                    }               
                }               
            }
        });
        return returnValue;
    }
    catch (Exception exp)
    {
        Classes.Logs.Error.Log_Error("IsUserInGroup", "DocumentCenterItem.cs", exp.Message, DateTime.Now);
        return false;
    }
}