2010-02-10 7 views
0

J'ai créé un composant WebPart qui rassemble des informations à partir d'une bibliothèque de documents. Il fonctionne bien sous l'application web "admin" (nous avons deux applications web: un site admin pour les utilisateurs non-anonymes, un site www pour les utilisateurs anonymes, ces deux sites partagent le même contenu).401 NON AUTORISÉ dans SharePoint 2007

Lorsque j'ouvre le site www, il affiche le composant WebPart vide lorsqu'il ne fait pas référence à la bibliothèque de documents. Cependant, quand il est lié à la bibliothèque de documents, il montre 401 NON AUTORISÉ. La même bibliothèque de documents peut être interrogée avec succès par CQWP à partir des sites admin et www.

Une aide?

Merci.

Répondre

2

Résolu.

Il semblait que l'objet SPWeb énuméré à partir de l'objet SPSite la propriété siteCollection AllWebs effectue un contrôle de sécurité pour chaque objet Web.

Si l'utilisateur n'a pas d'autorisation avec un objet Web particulier, il génère une erreur dans le niveau supérieur qui entraîne une page 401.

L'utilisation de privilèges élevés a résolu le problème.

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    foreach (SPWeb s in siteCollection.AllWebs) 
    {...} 
}); 

article MSDN: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

1

Soyez prudent courir avec des privilèges élevés. SharePoint sait qui effectue une requête et peut ajuster les résultats en fonction des privilèges de cet utilisateur. L'exécution avec des privilèges élevés peut renvoyer des résultats non destinés à cette personne.