Es posible que incluso ejecutando código con privilegios elevados os falle el código cuando accedeis a una audiencia para consultar si un usuario pertenece a la misma. El código sería mas o menos el siguiente:
try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteName))
{
AudienceManager audManager = new AudienceManager (ServerContext.GetContext( site));
Audience audience = audManager.GetAudience(audienceName);
ArrayList userInfoCollection = audience.GetMembership();
foreach (UserInfo userInfo in userInfoCollection)
{
if (userInfo.Email.ToUpper() == user.Email.ToUpper())
result = true;
}
}
}
});
}
catch (Exception ex)
{
}
Este error en un principio puede deberse a permisos por parte del usuario que está corriendo el pool de aplicaciones. Para validar eso teneis que ir a la seccion de administracion del proveedor de servicios compartidos y comprobar que el usuario tiene permisos para administrar audiencias.
Una vez validado esto, si os sigue fallando podeis probar este codigo que a mi me funcionó sin problemas:
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(siteName))
{
AudienceManager audManager = new AudienceManager (ServerContext.GetContext( site));
if (audManager.IsMemberOfAudience(user.LoginName, audienceName))
result = true;
}
});
No hay comentarios:
Publicar un comentario