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

SharePoint .NET Discussion :

Microsoft.Office.Interop.Word + Sharepoint + Usercontrol


Sujet :

SharePoint .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut Microsoft.Office.Interop.Word + Sharepoint + Usercontrol
    Bonsoir,
    j'explique mon problème:

    J'ai créer divers user control me permettant de requeter sur une base de données et de générer dynamiquement un cv.

    Je le place sur mon sharepoint tout marche en administrateur mais des que je passe en utilisateur du site j'ai une erreur 403 -Accès refusé lors de la création du cv.

    J'ai placé dans une bibliothèque sharepoint mon modèle de CV et je le remplis grâce au fonction de la dll Microsoft.Office.Interop.Word puis j'enregistre le CV généré sur cette même liste et je l'ouvre.

    voici un peu de code :
    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
     
    string cvcommercial = ConfigurationManager.AppSettings["CV"];
    string save2 = ConfigurationManager.AppSettings["save2"];
    Object oTemplatePath = cvcommercial;
     
    doc = oWordDoc.Documents.Open(ref oTemplatePath, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
     Object bookmark = "Nom";
    Microsoft.Office.Interop.Word.Range bookmarkRange = doc.Bookmarks.get_Item(ref bookmark).Range;
            bookmarkRange.Text = Nom;
     
    Object oSaveAsFile = (Object)save2;
            doc.SaveAs(ref oSaveAsFile, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
            ref oMissing, ref oMissing);
     
            doc.Close(ref oMissing, ref oMissing, ref oMissing);
            oWordDoc.Quit(ref oFalse, ref oMissing, ref oMissing);
     
            Page.RegisterStartupScript("openwin", "<script>window.open('" + save2 + "');</script>");
    ma question est quel sont les droits que je dois mettre aux utilisateurs pour voir générer les fichiers Words?
    il y a une sécurité sur Microsoft.Office.Interop.Word?

    Merci d'avance en espérant d'avoir été clair.

    Cordialement.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Points : 1 663
    Points
    1 663
    Par défaut
    Mets ton code dans un SPSecurity.RunWithElevatedPrivileges

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Ok je vais voir tout ca

    je tiens au courant.
    Merci.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Salut,
    je viens de tester mais ca ne marche pas j'ai utilisé le code suivant :

    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
     
    Guid webGuid = webInUserContext.ID;
    Guid siteGuid = SiteInUserContext.ID;
     
    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        // get the site in impersonated context
                        using (SPSite site = new SPSite(siteGuid))
                        {
     
                            // get the web in the impersonated context
                            SPWeb web = site.OpenWeb(webGuid);
     
                           // J'ai mis mon code ici
     
     
                         web.Dispose(); 
                        }
     
                   });
    J'ai lu sur des forums que ca viendrai peut être des droits du microsoft word application mais introuvable dans le DCOM même avec son numéro SLID.....

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    voici l'erreur quand je debug sur mon sharepoint:

    La récupération de la fabrique de classe COM pour le composant avec le CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Runtime.InteropServices.COMException: La récupération de la fabrique de classe COM pour le composant avec le CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 519
    Points : 1 663
    Points
    1 663
    Par défaut
    Ben là je sais pas...

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Merci quand meme Glucas
    J'y suis depuis ce matin et pas la moindre avancé...
    ca me fout les boules de perdre du temps pour ça...m'enfin l'espoir fait vivre

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    voici l'erreur quand je debug sur mon sharepoint:

    La récupération de la fabrique de classe COM pour le composant avec le CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.Runtime.InteropServices.COMException: La récupération de la fabrique de classe COM pour le composant avec le CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante : 80040154.
    Chez moi (je suis sous server 2008) il est référencé sous l'id {00020906-0000-0000-C000-000000000046}

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    ca doit surement changer vu que je suis sous windows server 2003.
    Merci pour cette précision.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Mais question, ton code, il arrive a ouvrir le fichier word quand il est exécuté dans le site SharePoint ??

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Oui quand je suis en administrateur sur le sharepoint tout marche parfaitement mais des que je passe par un utilisateur normal les requetes marchent mais des que je veux editer mon fichier .dotx il me sort le code erreur.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Bizarre car j'ai a peut près le même code et quand je veux ouvrir le document il me retourne constamment null.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Met une partie de code pour voir alors si je peux faire quelque chose.

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Merci pour ton aide, voile un bout de mon code :

    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
     
    private void ProcessFileWord(SPFile file)
        {
            Microsoft.Office.Interop.Word._Document document = null;
            object missing = System.Reflection.Missing.Value;
            object fileName = this.webSiteUrl + "/" + file.Url;
     
            try
            {
                if (this.wordApplication == null)
                {
                    wordApplication = new Microsoft.Office.Interop.Word.Application();
                    wordApplication.Visible = false;
                }
     
                //Ouverture du document
                document = wordApplication.Documents.Open(ref fileName,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing);
     
                if (document != null)
                {
     
                    this.InitWordContentControl(document, document.ContentControls);
     
                    foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)
                    {
                        foreach (Microsoft.Office.Interop.Word.HeaderFooter header in section.Headers)
                            this.InitWordContentControl(document, header.Range.ContentControls);
     
                        foreach (Microsoft.Office.Interop.Word.HeaderFooter footer in section.Footers)
                            this.InitWordContentControl(document, footer.Range.ContentControls);
                    }
     
                    // Sauvegarde du document
                    document.Save();
                }
            }
            finally
            {
                // Fermeture du document
                if (document != null)
                    document.Close(ref missing, ref missing, ref missing);
            }       
        }
    Ce même code s'exécute dans un page Web (non SharePoint) sur laquelle j'indique l'url du site mais sur le site en question ou je recupère les infos par le SPContext.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    Dans ton "object fileName" tu as bien le nom de ton fichier ?
    il n'y a pas d'espace?

    essaye de debugger directement sur ton sharepoint avec cette méthode:
    http://web.iotap.com/Blogs/tabid/277...m-VS-2008.aspx

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Dans mon object fileName j'ai "url/monfichier.docx".

    Et j'ai déjà debuggé le UserControl et c'est comme ca que je sais que Documents.Open() me retourne null quand je met le code dans le site alors qu'executé dans une winform tout se passe très bien, idem dans un site Web (non SharePoint) mais des que c'est dans une site SharePoint c'est mort.



    Tu aurais pas activer quelque chose dans le web.config du site ?? désactivé une sécurité ??

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    c'est vraiment bizarre...
    Essaye de la mettre en dur l'adresse pour voir si passe et si c'est le cas rentre tes données en dur dans ton web.config

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Déjà essayé et ça change rien c'est comme si il y'avait une sécurité sur les sites SharePoint.

    PS: Tu aurais pas activer quelque chose dans le web.config du site ?? désactivé une sécurité ??

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Points : 23
    Points
    23
    Par défaut
    non pas du tout.
    je peux t'envoyer mon web.config si tu veux voir.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 150
    Points : 152
    Points
    152
    Par défaut
    Ca je dit pas non.

    Car j'ai une VM Microsoft sur laquelle mon bout de code marche une fois et après Word me parle de licence et qu'il est pas installé pour l'utilisateur alors qu'il a parfaitement marché la première fois. (Bridage Microsoft possible pour éviter de se servir de leurs VM en prod)

    Mais quand je le passe sur une VM maison (fait par l'entreprise et qui marche parfaitement) le code me retourne null lors de l'ouverture du documents Word

Discussions similaires

  1. Recherche de Microsoft.Office.Interop.Word.dll
    Par MRosa dans le forum Framework .NET
    Réponses: 7
    Dernier message: 26/03/2015, 16h59
  2. [Débutant] Probleme avec Silverlight et Microsoft.Office.Interop.Word.dll
    Par manal00 dans le forum Silverlight
    Réponses: 0
    Dernier message: 20/06/2012, 13h42
  3. [Débutant] Avertissement sur méthode Quit de Microsoft.Office.Interop.Word
    Par dvdavid dans le forum C#
    Réponses: 6
    Dernier message: 17/10/2011, 12h55
  4. Réponses: 4
    Dernier message: 16/06/2011, 10h06
  5. Réponses: 10
    Dernier message: 19/07/2007, 12h38

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