No hace mucho tuve que desarrollar una WebPart para inserta programáticamente elementos sobre una lista personalizada de SharePoint. EL ambiente sobre el que estaba corriendo mi aplicación web era de un sitio SharePoint de publicación para internet con autentificación por formularios habilitada y acceso anónimo soportado. Cuando se ejecutaba mi código  me mandaba a una página de denegación de acceso debido a credenciales no validas. Por supuesto que esto es un escenario donde se requiere “Impersonation”.

A continuación dejo una de las tantas opciones disponibles en código para lograr “Impersonation” en una WebPart de SharePoint 2007.

SPSecurity.RunWithElevatedPrivileges(delegate()
          {

              using (SPSite s = new SPSite(siteUrl))
              {
                
                  SPWeb w = s.OpenWeb();
                  w.AllowUnsafeUpdates = true;
                  w.Update();

                  SPList myList = w.Lists[listName];

                  SPListItem new = myList.Items.Add();
                  new["field1"] = txtField1.Text;
                  new["field2"] = txtField2.Text;
                  new["field3"] = this.Page.Request.Url.ToString();
                  new["field4"] = txtField3.Text.ToString();

                  new.Update();
              }


          });

Este fue el code del dia. Saludos