我想检查具有站点权限的当前用户,在 SSOM 中可编程。
我在 Visual Studio 2013 中为控制台应用程序创建。
但我在一个 SharePoint 场中得到了有趣的结果。
在“网站集功能”部分,我激活了“SharePoint Server Publishing Infrastructure”。
在这种情况下,创建了 SharePoint 组“样式资源阅读器”并包含“所有人”。然后我为“无站点权限”用户尝试了这个程序。
string url1 = "http://ServerName/sites/SiteCol1";
string userName = "i:0#.w|domainname\\username";
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
Console.WriteLine("Privilages");
using (SPSite oSIte = new SPSite(url1))
{
using(SPWeb web1 = oSIte.OpenWeb())
{
Console.WriteLine("checkpermissiion");
Console.WriteLine(web1.GetUserEffectivePermissions(userName));
}
}
}
);
}
catch (UnauthorizedAccessException ex)
{
console.writeline(ex.message);
}
catch (Exception ex)
{
Console.WriteLine("Catch Exception");
Console.WriteLine(ex.Message);
}
finally
{
/
SPSecurity.CatchAccessDeniedException = true;
}
在所有 4 个农场中,3 个农场返回 "Open" 。我认为这是因为 Style Resource Readers 包含“Everyone”
然而,1 农场没有返回许可。
所以我的问题。在相同的代码中,相同的解决方案,为什么结果不同?
所以如果有人知道这个案例,请告诉我。