Artículo original publicado el sábado, 14 de enero de 2012

Un amigo mío me envío un problema interesante el otro día.  Estaba tratando de agregar un nuevo usuario mediante programación a un sitio de notificaciones de Windows y estaba teniendo todo tipo de dificultades.  Su intento inicial de agregar el usuario con dominio\nombredeusuario y la clase SPRoleAssignment no funcionaba para él.  A continuación, probó distintos tipos de métodos para proporcionar el valor codificado de notificaciones para lo que debería ser el nombre de usuario y consiguió que funcionara de manera parcial pero tuvo algunos extraños efectos secundarios, como que el nombre aparecía dos veces.  Aunque no tuve la oportunidad de examinar personalmente todas las variaciones y problemas que tuvo, lo que encontré que funcionó para mí al primer intento fue usar el método EnsureUser en SPWeb.  Es mucho más sencillo que tener que trastear para probar y obtener la codificación para un nombre de cuenta; también resulta mucho más sencillo porque solo tiene que pasar el nombre de la cuenta en lugar de los cuatro parámetros que normalmente tiene que usar para agregar un usuario.  EnsureUser se encarga automáticamente de la codificación del nombre y simplifica realmente su código. 

Para terminar, este es un breve ejemplo:

using (SPSite theSite = new SPSite("http://foo"))
{
  using (SPWeb theWeb = theSite.OpenWeb())
  {
    SPUser theUser = theWeb.EnsureUser("dominio\nombredeusuario");
  }
}

 

Esta entrada de blog es una traducción. Puede consultar el artículo original en Adding Users Programmatically to A Claims Site in SharePoint 2010