Мы пытаемся создать получатель события ItemAdded, который обновит поле «Создано (Автор)» в пользовательском списке SharePoint. В этом пользовательском списке мы включили Разрешения рычага элементов, чтобы пользователь А мог видеть только то, что он создает . Проблема заключается в том, что когда другой пользователь (пользователь B) создает элемент для кого-то другого (пользователь A), пользователь A не сможет увидеть этот элемент.
Итак, мы хотим, чтобы все, что находится в поле «Запрос по», было скопировано в поле «Создано по». Чтобы туда попасть, с помощью нескольких человек, находящихся в Интернете, мы создали следующий приемник событий, но он не работает. Можете ли вы сказать нам, что с ним не так?
using System;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Security;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.Workflow;
namespace createdByElevate.EventReceiver1
{
/// <summary>
/// List Item Events
/// </summary>
public class EventReceiver1 : SPItemEventReceiver
{
/// <summary>
/// An item was added.
/// </summary>
public override void ItemAdded(SPItemEventProperties properties)
{
//update base first
base.ItemAdded(properties);
string SiteUrl = properties.Web.Url;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SiteUrl))
{
SPWeb web = site.OpenWeb();
SPList List = web.Lists["listName"];
SPListItem item = List.GetItemById(properties.ListItem.ID);
item["Submit User"] = item["Requested By"];
item.Update();
}
});
}
}
}
В журналах ULS обнаружена следующая ошибка:
- Ошибка выполнения изолированного кода. - Внутреннее исключение: System.Runtime.Remoting.RemotingException: сервер обнаружил внутреннюю ошибку. Для получения дополнительной информации отключите customErrors в файле .config сервера. Трассировка стека сервера: исключение переброшено
в [0]:
в System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage (IMessage reqMsg, IMessage retMsg)
в System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke (MessageData & msgData, тип Int32)
в Microsoft.SharePoint.Administration.ISPUserCodeExecutionHostProxy.Execute (Тип userCodeWrapperType, Guid siteCollectionId, SPUserToken userToken, Строка affinityBucketName, SPUserCodeExecutionContext executeContext)
в Microsoft.SharePoint.UserCode.SPUserCodeExecutionManager.Execute (тип userCodeWrapperType, сайт SPSite, SPUserCodeExecutionContext executeContext)
Ошибка при загрузке и запуске получателя событий созданногоByElevate.EventReceiver1.EventReceiver1 в созданномByElevate, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 97fddd01b051f985. Дополнительная информация ниже. Сервер обнаружил внутреннюю ошибку. Для получения дополнительной информации отключите customErrors в файле .config сервера.