首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么RunWithElevatedPrivileges在itemAdded eventreceiver中不起作用?

为什么RunWithElevatedPrivileges在itemAdded eventreceiver中不起作用?
EN

Stack Overflow用户
提问于 2019-07-05 01:12:09
回答 2查看 222关注 0票数 0

在我的eventreceiver项目中,itemAdded函数,我的代码将向第二个列表中添加项目,但它对于一些低权限的用户不起作用

代码语言:javascript
复制
SPSecurity.RunWithElevatedPrivileges(delegate ()
            {
                using (SPSite site = new SPSite(properties.SiteId))
                {
                    using (SPWeb web = site.OpenWeb(properties.Web.ID))
                    {
                        web.AllowUnsafeUpdates = true;
                        //my code
                        web.AllowUnsafeUpdates = false;
                    }
                 }
             }
EN

回答 2

Stack Overflow用户

发布于 2019-07-05 04:37:14

获取SPList对象时,请务必使用提升的web。不使用当前SPContext或事件接收器属性中的SPWeb。

因此,在您的示例中,获取列表应该如下所示:

代码语言:javascript
复制
    SPSecurity.RunWithElevatedPrivileges(delegate ()
    {
        using (SPSite site = new SPSite(properties.SiteId))
        {
            using (SPWeb web = site.OpenWeb(properties.Web.ID))
            {
                web.AllowUnsafeUpdates = true;
                SPList someList = web.Lists.tryGetList("LISTNAME");
                SPListItem newItem = someList.AddItem();
                // .... update columns and newItem.Update()
                web.AllowUnsafeUpdates = false;
            }
        }
    }

如果这不能解决问题,请提供更多的代码来检查,也许还有出现的错误。

票数 1
EN

Stack Overflow用户

发布于 2019-07-05 23:44:27

我写了一些代码(LogInfo("event@receiver@ starting!");)来记录我的代码中发生了什么,令人惊讶的是我发现甚至ItemAdded函数的第一行都没有执行!因为在shapreoint logs.It中没有找到任何东西,这意味着它没有进入ItemAdded函数或其他函数。下面是我的代码:

代码语言:javascript
复制
public override void ItemAdded(SPItemEventProperties properties)
{
    LoLogInfo("event@receiver@ starting!");
    SPSecurity.RunWithElevatedPrivileges(delegate ()
    {
        LogInfo("event@receiver@ first step!");
        using (SPSite site = new SPSite(properties.SiteId))
        {
            LogInfo("event@receiver@ second step!");
            using (SPWeb web = site.OpenWeb(properties.Web.ID))
            {
                LogInfo("event@receiver@ third step!");
                SPList activeList = web.Lists.TryGetList(properties.List.Title);
                SPList finalList = web.Lists[FinalListName];
                web.AllowUnsafeUpdates = true;
                SPListItem finalListItem = finalList.AddItem();
                LogInfo("event@receiver@ forth step!");
                //some other code here
                web.AllowUnsafeUpdates = false;
                }
         }                
    });
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56892124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档