IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

Ajout item a partir de web service


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Ajout item a partir de web service
    Bonjour a tous,
    Ça fait deux jours que j'essai de faire un ajout d'un item dans une picture library sans succès avec le même message d'erreur qui apparaît :

    Microsoft.SharePoint.Client.ServerUnauthorizedAccessException: Access is denied. You do not have permission to perform this action or access this resource.
    at Microsoft.SharePoint.Client.ClientRequest.ProcessResponseStream(Stream responseStream)
    at Microsoft.SharePoint.Client.ClientRequest.ProcessResponse()
    at Microsoft.SharePoint.Client.ClientContext.ExecuteQuery()
    at MobileWS.DAL.PlaintDAO.SetPlaint(Plaint Plaint) in C:\inetpub\wwwroot\MobileWS\MobileWS\DAL\PlaintDAO.cs:line 85
    at MobileWS.BLL.PlaintManager.SetPlaint(Plaint Plaint) in C:\inetpub\wwwroot\MobileWS\MobileWS\BLL\PlaintManager.cs:line 13
    at MobileWS.JazanWS.SetPlaint(String Img, String TITLE, String CITY, String ADDRESS, String ZONE, String STREET, String MOBILE, String PHONE, String TYPEPLAINT, String FILENAME, String MESSAGE, String MAIL) in C:\inetpub\wwwroot\MobileWS\MobileWS\JazanWS.asmx.cs:line 231
    voici le code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    public static void SetItem(Plaint Plaint)
            {
                ClientContext ctx = new ClientContext("http://SiteAddress");
                System.Net.WebRequest request = System.Net.HttpWebRequest.Create("http://SiteAddress:Port/WS.asmx?op=SetItem");
     
                request.UseDefaultCredentials = true;
                request.PreAuthenticate = true;
                request.Credentials = new System.Net.NetworkCredential("login", "Password");
                //request.Credentials = System.Net.CredentialCache.DefaultCredentials;
     
                System.Net.WebResponse response = request.GetResponse();
                Web web = ctx.Web;
                Folder docSetFolder = web.GetFolderByServerRelativeUrl(ctx.Url + "/lstItems");
                ctx.ExecuteQuery();
     
                string documentUrl = "/lstItems/" + FILENAME;
                FileCreationInformation fci = new FileCreationInformation();
                fci.Url = documentUrl;
                fci.Content = System.IO.File.ReadAllBytes(HttpContext.Current.Server.MapPath("~/UPLOADS/") + FILENAME);
     
                //get the folder's file collection
                FileCollection documentFiles = docSetFolder.Files;
                ctx.Load(documentFiles);
                ctx.ExecuteQuery();
     
                Microsoft.SharePoint.Client.File newFile = documentFiles.Add(fci);
                ctx.Load(newFile);
                ListItem item = newFile.ListItemAllFields;
                ctx.Load(item);
     
     
                //start setting metadata here
                string contentTypeId = string.Empty;
                item["Title"] = Plaint.FILENAME;
                item["City"] = Plaint.CITY;
                item["Adress"] = Plaint.ADDRESS;
                item["Zone"] = Plaint.ZONE;
                item["Street"] = Plaint.STREET;
                item["Mobile"] = Plaint.MOBILE;
                item["Phone"] = Plaint.PHONE;
                item["MESSAGE"] = Plaint.MESSAGE;
                item["Mail"] = Plaint.MAIL;
                item["ContentTypeId"] = contentTypeId;
                item["TypePlaint"] = Plaint.TYPEPLAINT;
     
                item.Update();
     
                ctx.ExecuteQuery();
            }
    Quelqu'un aurait-il une idée de l'origine de l'erreur?

  2. #2
    Membre averti
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant SharePoint
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Points : 308
    Points
    308
    Par défaut
    L'utilisateur qui exécute ton code, il est contributeur sur la picture library ?

    Sinon tu mixe du Client Context (Modèle objet client C#) et des appels WebServices... regarde de ce coté là :
    http://msdn.microsoft.com/fr-fr/libr...code-snippet-1

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Points : 5 347
    Points
    5 347
    Billets dans le blog
    5
    Par défaut
    Pourquoi ne pas utiliser les crédentials de l'utilisateur courant ?
    MSDN

  4. #4
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Points : 16
    Points
    16
    Par défaut
    Le problème est résolue:

    J'ai tout simplement donner les Credentials au ClientContext et non pas au Webrequest :

    C'est a dire j'ai remplace ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.Credentials = new System.Net.NetworkCredential("login", "Password");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctx.Credentials = new System.Net.NetworkCredential("login", "Password");
    et j'ai enlevé tout ce qui se rapporte au WebRequet de mon code.

    Ça marche très bien maintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 4] afficher résultat a partir du web services
    Par mariem deve dans le forum Langage
    Réponses: 4
    Dernier message: 10/06/2015, 13h14
  2. Ajout term dans termstore via web service sur webapp anonyme
    Par James Dt dans le forum Développement Sharepoint
    Réponses: 1
    Dernier message: 05/07/2013, 09h27
  3. Ajouter dans VS des projets "Web Service"
    Par achestyx dans le forum Visual Studio
    Réponses: 4
    Dernier message: 19/05/2009, 21h23
  4. Réponses: 1
    Dernier message: 27/12/2008, 11h59
  5. obtenir @ IP client à partir de web service
    Par ansoni dans le forum Services Web
    Réponses: 1
    Dernier message: 26/12/2007, 11h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo