У нас есть веб-часть, которая загружает документ в библиотеку документов. Пользователь, загружающий документ, может не иметь доступа к месту назначения, поэтому код, добавляющий файл, выполняется в блоке RunWithElevatedPrivileges . Это означает, что поле «Modified By» всегда имеет значение System Account. Вот код:
SPSecurity.RunWithElevatedPrivileges(
delegate
{
using (SPSite elevatedSite = new SPSite(SPContext.Current.Site.Url))
using (SPWeb targetWeb = elevatedSite.OpenWeb(webUrl))
{
targetWeb.AllowUnsafeUpdates = true;
SPFile newFile = files.Add(filename, file);
SPListItem item = newFile.Item;
// TODO: Insert code to set Modified By
item.SystemUpdate();
}
}
}
В поле «Modified By» необходимо указать имя текущего пользователя (в строке TODO выше), но ни одна из следующих попыток не сработала:
item["Modified By"] = SPContext.Current.Web.CurrentUser;
item["Author"] = SPContext.Current.Web.CurrentUser;
item["Modified By"] = new SPFieldUserValue(
SPContext.Current.Web, SPContext.Current.Web.CurrentUser.ID,
SPContext.Current.Web.CurrentUser.Name);
item["Author"] = new SPFieldUserValue(
SPContext.Current.Web, SPContext.Current.Web.CurrentUser.ID,
SPContext.Current.Web.CurrentUser.Name);
Кто-нибудь знает решение, позволяющее изменять значение "Modified By"?