8
votes

Récupération de l'usine de classe COM pour une erreur de composant lors de la génération de documents Word

J'essaie de modifier un document Word de vb.net en utilisant la plupart de ce code:

Comment automatiser le mot à partir de Visual Basic .NET Pour créer un nouveau document http://support.microsoft.com/kb/316383

Cela fonctionne bien sur ma machine, mais quand je publie sur le serveur, j'obtiens l'erreur suivante.

Récupération de l'usine de classe COM pour composant avec clside {000201FF-0000-0000-C000-000000000046} Échec du fait de l'erreur suivante: 80070005.

Description: Une exception non gérée s'est produite lors de la Exécution de la demande Web actuelle. S'il vous plaît examiner la trace de la pile pour plus de informations sur l'erreur et où Il est originaire du code.

Détails d'exception: System.UnauthorizedAccessException: Récupérer l'usine de classe COM pour composant avec clside {000201FF-0000-0000-C000-000000000046} Échec du fait de l'erreur suivante: 80070005.

L'erreur réelle se produit lorsque j'essaie de simplement créer un objet d'application Word xxx

à l'aide de Visual Studio 2008 et VB.NET 3.5. J'ai fait référence à la "bibliothèque d'objets Microsoft Word 10.0" et je vois un fichier interop.word.dll dans le répertoire bin.

Utilisation de MS Office 2003 sur la machine de développement et Windows Server 2003

Toujours assez nouveau à .net et ne possédez pas beaucoup de connaissances sur le serveur de fenêtres, mais "non autoriséAccessException" sonne comme une autorisation problème. Je me demande si quelqu'un pouvait me signaler dans la bonne direction sur ce que je pourrais avoir besoin de faire pour donner mon petit accès aux applications à utiliser Word.


0 commentaires

8 Réponses :


7
votes

Cela sonne définitivement comme un problème d'autorisations. Exécutez votre code dans un service Windows? Le service exécute normalement en tant que système local, qui peut ne pas avoir la permission d'accéder au modèle d'objet Word. De plus, si Word fonctionne déjà en utilisant les informations d'identification d'un autre utilisateur, votre programme peut ne pas être en mesure d'y accéder via COM à l'aide de différentes informations d'identification. Les applications de bureau ont tendance à être une instance unique qui semble exacerber ce problème.


7 commentaires

Assez intéressant lorsque je me suis connecté au système et j'ai couru le mot, il a dirigé l'installateur. Je suppose que personne n'a couru mot avant sur cet utilisateur. Cela n'a pas résolu mon problème, mais je me demande même avec la question de l'autorisation si cela l'aurait empêché de travailler. Non Mon code est une application Web. Bien que ce soit une petite application rarement utilisée, je n'ai jamais envisagé ce qui se passerait si deux personnes ont essayé de l'exécuter en même temps.Merci de cette contribution. Y a-t-il un moyen de voir si quelqu'un d'autre accède à l'objet COM? Je suis à peu près sûr que rien d'autre n'est que je ne saurais même pas où vérifier cela.


L'application Web fonctionne comme quel utilisateur? Dans IIS 7 Par exemple, le pool d'applications sera exécuté en tant que système local qui aura probablement le même problème.


Encore une fois, excusez mon ignorance mais est «Service de réseau» de ce dont vous parlez? C'est l'identité que le pool d'applications est prêt à utiliser.


Oui, il y a deux utilisateurs bien connus que les services fonctionnent généralement comme. Le système local est un identifiant à faible caractère privilégié qui est normalement utilisé par des services qui ne fournissent pas de services au réseau. Le service réseau est utilisé par des services qui font


Vous pouvez essayer de configurer le pool d'applications pour utiliser vos informations d'identification à la place.


J'ai ajouté au Webconfig, puis m'a ajouté au document MS Word DCOM et je reçois la même erreur 80080005 que j'ai mentionnée ci-dessous. J'ai trouvé "l'identifiant d'application" dans DCOM pour Word Application ID est {00020906-00000-0000-C000-000000000046}, mais l'erreur que je reçois dit CLSID 000209FF-0000-0000-C000-000000000046 Je me demande si cela est pertinent. Merci encore pour votre aide, j'ai beaucoup appris même si mon problème est toujours là. :RÉ


Je me suis connecté au serveur comme moi-même, dirigé l'application Web, et il a surgi de bizarre Windows Live chose et quand je frappe "Continuer", il a réellement lancé mot, mais m'a donné l'erreur ASP.NET "La méthode Ajouter ou la propriété n'est pas. disponible car la licence d'utilisation de cette application a expiré ". HAHA Le bureau sur le serveur n'a jamais été activé ... et je viens de réaliser que je dispose de Word 2002 (MS 10) et le serveur a 2003 (MS 11) ... Je vais examiner ces deux problèmes.



0
votes

On dirait que vous pouvez avoir une question de permission dans DCOM. Essayez d'éditer les autorisations de mots dans DCOM Config.


1 commentaires

Trouvé quelques personnes référencées blog.crowe.co.nz/archive /2006/03/02/589.aspx mais c'est pour Excel. N'a pas aidé, l'erreur est identique, mais le numéro d'erreur a changé de modification de: 80080005. System.RunTIME.Interopservices.ComeXception au lieu de System.UnauthorizeCessException




0
votes

Je connais le même problème et que l'espace problématique que j'ai trouvé était "Configuration de la sécurité pour Microsoft Word dans DCOM". Dans le lien suivant, vous pouvez trouver un guide étape par étape pour savoir comment configuration Composants de DCOM, répète ces étapes pour le mot et votre problème sera résolu.

http://www.biocompssystems.com/_public/dcomconfigurationStepBystepforexp.doc < / a>

merci, Sushil Jinder


0 commentaires

0
votes

J'ai eu le même problème sur Windows 2008 R2. Fini par utiliser ce post: http: // social. msdn.microsoft.com/forums/en-us/netfx64bit/Torthread/65A355CE-49C1-47F1-8C12-D9CF5F23C53E

puis modifiant l'utilisateur de l'identité d'impersonisation dans web.config vers un autre utilisateur pour le résoudre.

Je suis sûr qu'il y a une combinaison de solutions.


0 commentaires

0
votes

aller à start -> courir
Tapez regedit -32 et appuyez sur la touche Entrée.
- Éditeur de registre sera ouvert.
aller au registre hkey_classes_root \ word.application
Sélectionnez Word.Application et définissez la permission totale aux utilisateurs ci-dessous: -
administrateur, administrateurs, service local, système, service, interactif et utilisateurs.


0 commentaires

1
votes

Dans mon cas, Word fonctionne via un service Windows sous un compte de service.

Le problème était que le dossier de bureau n'existait pas dans C: \ windows \ system32 \ config \ systemprofile (ou dans c: \ windows \ syswow64 config \ systemprofile ).

L'ajout de cela résolvé le problème pour moi.


0 commentaires

0
votes

J'ai eu le même problème tout en générant du document Word. La question que j'ai résolue en vérifiant le gestionnaire de tâches et en mettant fin à l'exécution actuellement en cours d'exécution Winworkworkworkwork, puis exécuté mon code à nouveau. La question a disparu.


0 commentaires