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

C# Discussion :

Problème d'accès à une dll Microsoft


Sujet :

C#

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut Problème d'accès à une dll Microsoft
    Bonjour,
    Je travaille sur un projet C#/ASP.NET, dans lequel j'ouvre des fichiers Word pour en extraire le contenu. Pour cela j'ai inclus la référence à la DLL "Microsoft.Office.Interop.Word", mais l'accès à cette DLL retourne une erreur.

    Voici 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
     
            protected string recupereObjetDoc (object filePath) {
     
                private Microsoft.Office.Interop.Word.Application application = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document doc = null;
                try {
                    object missing = System.Reflection.Missing.Value;
                        doc = application.Documents.Open (ref filePath, 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);
                        Microsoft.Office.Interop.Word.Paragraph paraNo2 = doc.Content.Paragraphs[3];
                        if ((paraNo2.Range.End - paraNo2.Range.Start) > 1) {
                            string result = paraNo2.Range.Text;
                            doc.Close (ref missing, ref missing, ref missing);
                            return result;
                        }
                        return null;
                } catch (Exception ex) {}
            }
    L'exception suivante est levée sur la ligne doc = application.Documents.Open (.... :

    Unable to cast COM object of type 'Microsoft.Office.Interop.Word.ApplicationClass' to interface type 'Microsoft.Office.Interop.Word._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020970-0000-0000-C000-000000000046}' failed due to the following error: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).
    Voici la seule explication relative à mon problème trouvée sur le net :
    http://social.msdn.microsoft.com/For...9-e327af8cf8c0
    mais la solution ne fonctionne pas chez moi.
    Je souligne qu'en local je n'ai pas l'exception, mais lorsque je fais tourner mon application sur un serveur distant (qui a bien sûr Word installé) j'obtiens l'exception.

    Auriez-vous une suggestion ?
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Oui: ne pas utiliser l'interop COM! C'est très très vivement déconseillé côté serveur.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Oui: ne pas utiliser l'interop COM! C'est très très vivement déconseillé côté serveur.
    Bonjour Nathanael,

    En fait j'utilise le composant .NET dans mon projet.
    Y a-t-il une autre solution plus adaptée à ce que je veux faire ?
    Et y a-t-il une explication au fait que j'obtiens une exception sur le serveur distant uniquement et pas en local ?
    Merci d'avance,
    Cordialement.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par TheReturnOfMuton Voir le message
    Bonjour Nathanael,

    En fait j'utilise le composant .NET dans mon projet.
    Y a-t-il une autre solution plus adaptée à ce que je veux faire ?
    Et y a-t-il une explication au fait que j'obtiens une exception sur le serveur distant uniquement et pas en local ?
    Merci d'avance,
    Cordialement.
    Tu peux te tourner vers l'OpenXML qui te donneras des performances bien meilleures.

    Comme l'indique l'erreur c'est surement un problème de droits. Typiquement l'utilisateur du pool ASP.Net n'a pas les droits pour lancer Word et/ou le fichier.

    Voici quelques considérations à prendre en compte:
    http://support.microsoft.com/kb/257757

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 282
    Par défaut Solution trouvée
    Merci Nathanael pour tes réponses,

    Finalement le problème me crevait les yeux : des process Word polluaient le gestionnaire des tâches du serveur... et donc lockaient la dll, d'où mon message d'erreur :/ ça marche bien maintenant

    Après, niveau sécurité, cette technique n'est pas recommandée du tout, mais la décision de l'utiliser tout de même vient d'en haut

    Merci et @ + !

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

Discussions similaires

  1. Problème d'accès à une variable stockée dans une DLL
    Par bertrand125 dans le forum Langage
    Réponses: 1
    Dernier message: 03/03/2014, 16h56
  2. Problème d'accès à une BD via ASP
    Par beegees dans le forum ASP
    Réponses: 2
    Dernier message: 08/06/2005, 13h38
  3. [ADO] [MSACCESS] Problème d'accès à une table nommée OF
    Par FredRaid dans le forum Bases de données
    Réponses: 3
    Dernier message: 15/02/2005, 18h22
  4. Problème d'accès à une DB
    Par Mvu dans le forum ASP
    Réponses: 4
    Dernier message: 04/01/2005, 12h36
  5. Problème mémoire avec une dll par chargement dynamique
    Par widze19 dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/12/2003, 14h20

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