почему RunWithElevatedPrivileges не работает в приемнике событий itemAdded? - PullRequest
0 голосов
/ 04 июля 2019

в моем проекте приемника событий, функция itemAdded, мой код собирается добавить элемент во второй список, но он не работает для некоторых пользователей с низким уровнем привилегий

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;
                    }
                 }
             }

Ответы [ 2 ]

1 голос
/ 04 июля 2019

При получении объекта SPList обязательно используйте расширенную сеть.Не используйте SPWeb из текущих свойств SPContext или приемника событий.

Так что в вашем случае получение списка должно выглядеть следующим образом:



    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;
            }
        }
    }

, если это не помогает, просьба предоставитьнемного больше кода для проверки и, возможно, ошибка, которая присутствует.

0 голосов
/ 05 июля 2019

Я написал некоторый код (LogInfo («событие @ получатель @ начинается!»);) Для регистрации того, что происходит в моем коде, неожиданно я обнаружил, что даже первая строка ItemAdded Function не выполняется !!! Потому что ничего не найдено в shapreoint logs.It означает, что он не входит в функцию ItemAdded или что-то еще. вот мой код:

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;
                }
         }                
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...