【问题标题】:Update Sharepoint List with elevated privileges使用提升的权限更新共享点列表
【发布时间】:2011-08-27 19:26:52
【问题描述】:

在 Webpart 中,没有任何权限的用户需要读取和更新 Sharepoint 列表。

提升权限可以正常读取列表,但是当我尝试更新同一个列表时,会引发异常。如何更新具有提升权限的列表?

SPSecurity.RunWithElevatedPrivileges(delegate()
{ 

SPSite oSite = SPControl.GetContextSite(HttpContext.Current);
SPWeb oWeb = oSite.OpenWeb();
oWeb.AllowUnsafeUpdates = true;
SPListItemCollection listItems = oWeb.Lists["nameList"].Items;
SPListItem item = listItems.Add();

... 

item.Update(); // Throws Exception
});

【问题讨论】:

  • 异常发送消息“无法到达由于上下文无关的跟踪”。
  • 基本上是重复的。看看这个答案:stackoverflow.com/questions/6043312/…
  • 我建议在正确的代码中使用 using,您不应该让 spsite 和 spweb 对象未处理。如果您不是直接从 spcontext 或您在正确代码上方的代码中编写的方式获取它

标签: sharepoint sharepoint-2010 web-parts elevated-privileges


【解决方案1】:

问题在于 SPSite 的创建。

正确的代码:

SPSite oSite = new SPSite(SPContext.Current.Site.ID); 
SPWeb oWeb = oSite.OpenWeb(SPContext.Current.Web.ID);                                 
listItems  = oWeb.Lists["nameList"];

【讨论】:

    【解决方案2】:

    提升权限用于添加编辑和删除所有操作,因此必须是其他问题,请提供异常详细信息

    【讨论】:

    • 是的,是的。这是由 SPSite 的创建引起的。
    • 在这种情况下,您必须创建一个新的 spsite 和 spweb 实例,并且您不必使用来自 SPControl.GetContextSite(HttpContext.Current) 的站点对象
    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2016-02-10
    相关资源
    最近更新 更多