Je me demande pourquoi les deux méthodes énumérées ci-dessous ne donnent pas le même découpage de sécurité.Méthodes d'exécution avec des privilèges élevés dans un site de publication MOSS
Résultat attendu: Les deux méthodes donnent un accès complet à tous les contenus de la collection
Résultat réel du site actuel : parage de sécurité se produit lors de l'utilisation Méthode n ° 1
La méthode n ° 2 fonctionne correctement pour récupérer du contenu à partir d'autres sites Web, mais la méthode n ° 1 ne fonctionne pas.
Les deux méthodes donnent accès à travers les bandes en mode anonyme, et travaillent tous deux pour le site comptes admin.
La différence vient pour gestionnaires Hiérarchie, approbateurs et éditeurs. La méthode n ° 1 ne donne pas d'accès administrateur sur les sites Web.
Méthode n ° 1
using (SystemOperation op = new SystemOperation())
{
//Do an operation that requires retrieving across webs
}
public class SystemOperation : IDisposable
{
private WindowsImpersonationContext ctx;
public SystemOperation()
{
if (!WindowsIdentity.GetCurrent().IsSystem)
{
ctx = WindowsIdentity.Impersonate(System.IntPtr.Zero);
}
}
public void Dispose()
{
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool all)
{
if (ctx != null)
{
ctx.Undo();
}
}
}
Méthode n ° 2:
Microsoft.Sharepoint.SPSecurity.RunWithElevatedPrivileges(delegate()
{
//Do an operation that requires retrieving across webs
});
Quelle est la question? – Tundey
Désolé je n'ai pas de réponse à votre question, mais je suis curieux de savoir pourquoi vous utiliseriez la méthode 1? Aussi le formatage de code semble avoir foiré dans votre question. –
La raison pour laquelle vous auriez besoin de # 1 est que RunWithElevatedPrivileges ne fonctionne pas dans toutes les instances, comme l'accès au gestionnaire de profils. – webwires