禁止提示 访问被拒绝的 消息
SPWeb web = SPContext.Current.Web;
web.Site.CatchAccessDeniedException = false;
因为模拟权限时,被模拟的线程和当前线程的SPContext.Current不是同一个,
如果你模拟在SPContext.Current.Web下边执行代码,就有可能得到访问被拒绝
的错误。
所以 新开一个SPWeb来模拟 将会解决些问题,这个错误曾经让很多人花很多时间解决,所
以作者拿出来分享,我也转在这里。
SPWeb _webInUserContext = SPContext.Current.Web; SPSite _siteInUserContext = SPContext.Current.Site; Guid _webGuid = _webInUserContext.ID; Guid _siteGuid = _siteInUserContext.ID; SPSecurity.RunWithElevatedPrivileges(() => { using (SPSite _site = new SPSite(_siteGuid)) { _site.AllowUnsafeUpdates = true; SPWeb _web = _site.OpenWeb().Webs[_webGuid]; 。。。。 } });
本文介绍了一种方法,可以在SharePoint中避免因权限模拟而导致的访问被拒绝错误。通过创建新的SPWeb实例并使用SPSecurity.RunWithElevatedPrivileges进行权限提升,可以有效解决这一问题。
1万+

被折叠的 条评论
为什么被折叠?



