我是否通过以下代码检查给定用户是否属于某个群组。我得到了
未经授权的例外 (0X80070005)
我不明白为什么?我使用ChromeOptions option = ChromeOptions();
option.add_argument("--start-maximized");
,为什么它会给我这个例外!?有人给我一个暗示吗?提前谢谢!
SPSecurity.RunWithElevatedPrivileges
答案 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;
}
}