SPSecurity.RunWithElevatedPrivileges 方法

即使用户并不拥有完全控制,请执行具有完全控制权限的用户指定的方法。

命名空间:  Microsoft.SharePoint
程序集:  Microsoft.SharePoint(位于 Microsoft.SharePoint.dll 中)

语法

声明
Public Shared Sub RunWithElevatedPrivileges ( _
    secureCode As SPSecurity.CodeToRunElevated _
)
用法
Dim secureCode As SPSecurity.CodeToRunElevatedSPSecurity.RunWithElevatedPrivileges(secureCode)
public static void RunWithElevatedPrivileges(
    SPSecurity.CodeToRunElevated secureCode
)

参数

备注

可以从任何方法无参数并返回void创建secureCode对象。请参阅SPSecurity.CodeToRunElevated

您可以跳过通过定义内呼叫到RunWithElevatedPrivileges匿名方法使用SPSecurity.CodeToRunElevated构造函数。

重要信息注释重要信息

如果secureCode包含任何写入操作,对RunWithElevatedPrivileges调用应跟SPUtility.ValidateFormDigest()SPWeb.ValidateFormDigest()的呼叫。

示例

第一个示例显示RunWithElevatedPrivileges与SPSecurity.CodeToRunElevated构造函数一起使用。本示例中, GetSitesAndGroups是无参数方法返回 void 和某一位置定义可访问Button1_Click方法。

protected void Button1_Click(object sender, EventArgs e)
{
   SPSecurity.CodeToRunElevated elevatedGetSitesAndGroups = new SPSecurity.CodeToRunElevated(GetSitesAndGroups);
   SPSecurity.RunWithElevatedPrivileges(elevatedGetSitesAndGroups);
}

下面的示例演示对RunWithElevatedPrivileges的调用中定义为匿名方法所需的语法。

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    // implementation details omitted
});

可以在代理引用外委托创建SPSite对象,但是的方法和属性 assessors 对象的运行的用户上下文中创建对象的权限,不使用提升的权限。同一个点适用于SPWeb对象和任何其他对象。如果您需要执行使用提升的权限的对象的成员,您必须创建委托内的新对象。如果新的对象必须代表相同的保留的实体委托之外创建对象,您必须从外部创建的对象引用标识信息并使用它来创建新的对象中的委托。例如,如果web之前对RunWithElevatedPrivileges调用创建SPWeb对象的引用,然后下面的代码显示应使用其父SPSite对象的 ID 来构造一个新的SPSite对象。

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
    // implementation details omitted
    }
});

内部代理人, site对象的成员运行使用提升的权限,但web.Site中的成员的呼叫不会。请注意using关键字用于确保在该委托释放该对象。

另请参阅

引用

SPSecurity 类

SPSecurity 成员

Microsoft.SharePoint 命名空间

其他资源

Elevation of Privilege

Anonymous Methods (C# Programming Guide)