我有强烈的直觉,使用 SharePoint RunWithElevatedPrivileges
应该像瘟疫一样避免,但需要说服其他人确切原因。这就是我所拥有的。
最佳答案
提升的原因分为两类:
对于前者,你最好使用 SPSite impersonation .后者是我使用 RWEP 的唯一原因。
澄清一下,RWEP 不会产生新线程。相反,它使用 Win32 API 将当前线程的身份恢复为进程身份(关闭模拟)以运行提升的代码,然后重新打开模拟以代表当前用户恢复工作。这有几个含义:
正如 Alex 所说,SPSite 的子级从 SPSite 继承其权限,而 SPSite 在创建时又设置了权限。因此,即使您在 CodeToRunElevated 中引用它,SPContext.Current.Site 仍将以当前用户的权限运行。相反,您需要在提升的 block 内创建和使用新的 SPSite。
总结一下:RWEP 模拟 SharePoint 外部的应用程序池,SPSite 模拟模拟 SharePoint 内部的应用程序池。
关于asp.net - SharePoint 2007 - RunWithElevatedPrivileges - 使用它的陷阱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1525953/