Tenemos un elemento web que carga un documento a una biblioteca de documentos. El usuario que carga el documento puede no tener acceso a la ubicación de destino, por lo que el código que agrega el archivo se ejecuta dentro de un bloque RunWithElevatedPrivileges. Esto significa que el campo "Modificado por" siempre se establece en Cuenta del sistema. Aquí está el código:¿Cómo se puede modificar "Modificado por" cuando se usa RunWithElevatedPrivileges?
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();
}
}
}
El "Modificado por" campo necesita ser definido como el nombre del usuario actual (en la línea TODO arriba), pero ninguno de los siguientes intentos han trabajado:
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);
¿Alguien sabe de una solución que permite cambiar el valor "Modificado por"?
Gran ayuda, +1 ... –
Comportamiento extraño de las llamadas. Gracias, por publicar la solución. Me ayudó. –
tengo un problema en mi biblioteca de documentos donde he habilitado el check-in y check-out. así que cuando se llama mi itemupdate sigo recibiendo la modificación como "cuenta del sistema" y cuando lo intento con listitem ["Editor"] = ospuser.ID; , estoy de nuevo recibiendo un check out y un error de registro. pls ayuda – SaMolPP