“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?
InformationsquelleAutor user3203960 | 2014-04-11