“RunWithElevatedPrivileges” dans sharepoint
"RunWithElevatedPrivileges": par programmation en C# il ne m'aide pas pour permettre aux utilisateurs sans de gestion de Liste la permission de télécharger un fichier pour les éléments de liste sharepoint. Mon code est:
SPSecurity.RunWithElevatedPrivileges(delegate
{
SPWeb web = SPContext.Current.Site;
//my logic to upload file and edit list item attachments.
});
Code complet
protected void btn_Upload_Click(object sender, EventArgs e)
{
StreamWriter sw = new StreamWriter(@"C:\Upload.txt", true);
try
{
if (this.FileUpload1.HasFile)
{
string siteURL = SPContext.Current.Web.Url.ToString();
if (Request["Items"] != null && Request["ListId"] != null)
{
string SelectedItems = Convert.ToString(Request["Items"]);
string[] lstJobsIds = SelectedItems.Split(new string[] { "|" }, StringSplitOptions.None);
SPList list = null;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//SPSite site = SPContext.Current.Site;
using (SPSite site = new SPSite("http://sitrURL"))
{
using (SPWeb web = site.OpenWeb())
{
//Fetch the List
//list = web.Lists["ListName"];
sw.WriteLine("WEb is :" + web);
list = web.Lists["ListName"];
if (lstJobsIds.Length > 0)
{
////site.AllowUnsafeUpdates = true;
////web.AllowUnsafeUpdates = true;
for (int i = 0; i < lstJobsIds.Length; i++)
{
//Get the List item
if (lstJobsIds[i] != null && lstJobsIds[i] != string.Empty)
{
sw.WriteLine(lstJobsIds[i]);
SPListItem listItem = list.GetItemById(int.Parse(lstJobsIds[i]));
//Get the Attachment collection
SPAttachmentCollection attachmentCollection = listItem.Attachments;
Stream attachmentStream;
Byte[] attachmentContent;
sw.WriteLine(this.FileUpload1.PostedFile);
sw.WriteLine(this.FileUpload1.FileName);
attachmentStream = this.FileUpload1.PostedFile.InputStream;
attachmentContent = new Byte[attachmentStream.Length];
attachmentStream.Read(attachmentContent, 0, (int)attachmentStream.Length);
attachmentStream.Close();
attachmentStream.Dispose();
//Add the file to the attachment collection
attachmentCollection.Add(this.FileUpload1.FileName, attachmentContent);
//Update th list item
listItem.Update();
web.AllowUnsafeUpdates = true;
}
}
//web.AllowUnsafeUpdates = false;
//site.AllowUnsafeUpdates = false;
}
sw.Close();
}
}
});
}
}
}
catch (Exception ex)
{
sw.WriteLine(ex);
sw.Close();
}
}
Maintenant, Lorsque l'utilisateur clique sur le bouton pour télécharger le fichier, il obtient HTTP Error 403 Forbidden
.
Alors,comment permettre aux utilisateurs Avec la limite de l'autorisation d'exécuter ma fonction personnalisée normalement?
- lorsque vous exécutez le code de.minuterie de service,les gestionnaires d'événements,page personnalisée?
- Vous devez créer SPWeb objet à l'intérieur de RunWithElevatedPrivileges. SPContext - il du contexte de l'utilisateur, et c'est avec des privilèges limités. Btw, la meilleure pratique est de créer des objet SPSite avec système de paramètres de compte plutôt RunWithElevatedPrivileges.
- Mandar Jogalekar Ma mise à jour posté code de clic du bouton dans un applicayion page de mon projet visual studio,s'il vous plaît aider.
- Zainchkovskiy comment faire ce que tu dis?
Vous devez vous connecter pour publier un commentaire.
Votre code n'est pas correct. Toujours créer et disposer les objets à l'intérieur de la RunWithElevatedPrivileges délégué. Donc, vous devriez créer une nouvelle instance de SPweb à l'intérieur de la RunWithElevatedPrivileges bloc en utilisant la fonction "nouveau" mot-clé.
Exemple:
HTML:
Parfois dans SharePoint personnalisés solutions dont nous avons besoin pour exécuter du code personnalisé à l'aide du Système de privilèges de Compte que la session courante de l'utilisateur qui ne disposent pas de droits suffisants pour exécuter du code personnalisé. Dans ces situations, nous utilisons RunWithElevatedPrivileges() la méthode de déléguer les droits du Compte Système actuel de l'utilisateur connecté.
Dans le cas où l'utilisateur actuel ne dispose pas des autorisations appropriées pour exécuter du code personnalisé alors qu'il va obtenir de l'erreur “Accès Refusé”. Pour contourner erreur “Accès Refusé” nous utilisons RunWithElevatedPrivileges() la méthode.
Cliquez sur le lien ci-dessous pour une réponse plus détaillée
http://sharepointbag.com/latest/code-snippets/sharepoint/security/5/how-to-use-run-with-elevated-privileges-(rwep)-in-sharepoint/