web-dev-qa-db-fra.com

L'accès au modèle d'objet Office Word via asp.net entraîne «échec en raison de l'erreur suivante: 80070005 L'accès est refusé».

J'ai développé un site Web qui permet aux utilisateurs de télécharger des documents Office, puis utilise le modèle d'objet Office pour convertir le document en un fichier HTML qu'il affiche ensuite dans un iFrame.

J'ai, bien sûr, inclus des références à Office.interop.Word, et le site fonctionne bien sur ma machine de développement. Lorsque je l'ai téléchargé sur mon serveur de production, le site fonctionne correctement jusqu'à ce que j'essaie de télécharger un document. J'ai d'abord eu une erreur similaire qui disait "Objet COM non enregistré". J'ai réalisé que Word n'était pas installé sur mon serveur de production. J'ai donc installé Word et maintenant lorsque le serveur essaie d'accéder au modèle d'objet Word, je reçois l'erreur suivante:

La récupération de la fabrique de classes COM pour le composant avec CLSID {000209FF-0000-0000-C000-000000000046} a échoué en raison de l'erreur suivante: 80070005 L'accès est refusé. (Exception de HRESULT: 0x80070005 (E_ACCESSDENIED))

J'ai recherché le CLSID correspondant dans le registre et trouvé un dossier correspondant. J'ai ajouté le contrôle total au compte IUSR_ et en raison de la persistance de l'erreur, j'ai finalement ajouté le contrôle total à "tout le monde" et assuré ces autorisations héritées jusqu'au reste du dossier. J'ai ensuite ajouté le contrôle total à IUSR_ et j'ai finalement ajouté le contrôle total à "tout le monde" dans mon dossier Microsoft Office.

I je ne sais pas quelles autres autorisations accorder et où, pour que cette erreur "Accès refusé" disparaisse. Je dois les accorder au mauvais endroit, car pour autant que je sache, je ne peut pas être plus permissif que "Tout le monde" "Contrôle total".

Quelqu'un peut-il nous éclairer?

48
Camenwolf

Cela a fonctionné pour moi:

  1. Dans la ligne de commande, mettez DCOMCNFG
  2. Services de composants -> Ordinateurs -> Poste de travail -> Configuration DCOM
  3. Recherchez "Microsoft Word 97 - 2003 Document" (s'il manque, vérifiez si votre Word est également en 64 bits (si votre Windows l'est) s'il n'est pas exécuté mmc comexp.msc /32 au lieu de DCOMCNFG à l'étape 1 comme suggéré par Darksealici )
  4. Clic droit -> Propriétés
  5. Accédez à l'onglet Sécurité et modifiez les boutons radio "Personnaliser" afin que IIS_IUSRS puisse avoir des droits de lancement et d'accès
  6. Allez dans l'onglet Identité et choisissez "L'utilisateur interactif"
  7. Appliquer les modifications et réessayer
  8. Si tout cela échoue, allez aussi dans l'onglet "Général" et dans la liste déroulante "Niveau d'authentification" choisissez "Aucun".
40
gyosifov

Ok, j'ai résolu ce problème avec ces étapes:

  1. Dans la ligne de commande, mettez DCOMCNFG
  2. Développez Racine de la console> Service de composants> Ordinateurs, cliquez avec le bouton droit sur Poste de travail et sélectionnez Propriétés
  3. Dans l'onglet Sécurité COM> Autorisations de lancement et d'activation, cliquez sur Modifier par défaut
  4. Ajoutez l'utilisateur (ex. IIS_IUSRS) ou le service
  5. Cochez Autoriser le lancement local et l'activation locale

Ensuite, Excel, Word et d'autres applications peuvent fonctionner, bonne chance.

59
sur97c

Regardez dans l'Observateur d'événements, sous Journaux Windows, Système, sur la machine serveur sur laquelle Word est installé. Voyez-vous un événement enregistré qui se lit quelque chose de similaire à:

Les paramètres d'autorisation par défaut de la machine n'accordent pas d'autorisation d'activation locale pour l'application COM Server avec CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8} à l'utilisateur SomeMachine\SomeUser SID (S-1-5-21-483881670-2168941642- 1987552629-1003) à partir de l'adresse LocalHost (à l'aide de LRPC). Cette autorisation de sécurité peut être modifiée à l'aide de l'outil d'administration des services de composants.

Si c'est le cas, exécutez DCOMCNFG.EXE et accédez à Services de composants, Ordinateurs, Poste de travail (ou autre nom), DCOM Config (et vous pouvez simplement répondre "Non" s'il vous demande si vous souhaitez corriger quoi que ce soit) et si le journal des événements message est pour un application, puis recherchez-le par le nom dans le message du journal des événements, ici par nom d'élément, et si le message du journal des événements est pour un CLSID (comme l'exemple ci-dessus), puis recherchez-le par le CLSID "{148B ...}" (c'est juste un CLSID aléatoire que j'ai collé - il correspondra probablement à votre 000209FF ... ci-dessus), et sélectionnez Plus d'actions ... Propriétés, dans l'onglet Sécurité.

Ici, vous pouvez sélectionner [x] Personnaliser puis Modifier, pour ajouter l'autorisation pour le compte d'utilisateur approprié d'activer et d'accéder à l'application ou à la classe DCOM requise.

C'est juste une supposition, mais essayez, ou quelque chose du genre (c'est-à-dire accorder l'accès au CLSID via DCOMCNFG).

12
Jim Flood

J'ai eu du mal à comprendre cela en utilisant la réponse acceptée, car l'enregistrement Microsoft Word 97 - 2003 Document n'était pas répertorié parmi les éléments de configuration DCOM. J'ai trouvé la solution dans cet article de blog Technet , où ils ont correctement expliqué le problème:

Il est important de noter que si vous installez Microsoft Office 32 bits sur une machine 64 bits, vous devrez peut-être utiliser le gestionnaire de configuration DCOM 32 bits pour afficher les programmes, selon votre système d'exploitation.

Sur les systèmes d'exploitation x64 à partir de Windows XP vers Windows Server 2008, la version 64 bits de DCOMCNFG.EXE ne configure pas correctement les applications DCOM 32 bits pour l'activation à distance. Ce comportement provoque des composants destinés à à activer à distance au lieu d'être activé localement. Ce problème ne se produit pas dans Windows 7 et Windows Server 2008 R2 et versions ultérieures.

Réf .: http://msdn.Microsoft.com/en-us/library/windows/desktop/ms678426 (v = vs.85) .aspx

Et également suggéré d'utiliser la commande de ligne de commande suivante (au lieu de DCOMCNFG) comme correctif efficace:

mmc comexp.msc /32

Ce qui force le chargement du gestionnaire de configuration DCOM 32 bits au lieu de celui 64 bits et permet d'effectuer les étapes décrites dans la réponse acceptée. Si cela ne fonctionne toujours pas, l'article explique également un certain nombre d'autres solutions de contournement possibles.

Pour plus d'informations sur ce sujet, vous pouvez également lire cet article sur mon blog.

5
Darkseal

Si vous ne trouvez pas d'application Microsoft Word dans DCOM

Sur un système 64 bits avec Office 32 bits, essayez ceci:

  1. Élément de liste
  2. Début
  3. Courir
  4. mmc-32
  5. Fichier
  6. Ajouter Supprimer un composant logiciel enfichable
  7. Services de composants
  8. Ajouter
  9. D'accord
  10. Racine de la console
  11. Services de composants
  12. Des ordinateurs
  13. Mon ordinateur
  14. Configuration DCOM

après ça

  1. Recherchez "Microsoft Word 97 - 2003 Document" (s'il manque, vérifiez si votre Word est également en 64 bits (si votre Windows l'est))
  2. Clic droit -> Propriétés
  3. Accédez à l'onglet Sécurité et modifiez les boutons radio "Personnaliser" afin que IIS_IUSRS puisse avoir des droits de lancement et d'accès
  4. Accédez à l'onglet Identité et choisissez "L'utilisateur interactif" Appliquez les modifications et réessayez
  5. Si tout cela échoue, allez également dans l'onglet "Général" et dans la liste déroulante "Niveau d'authentification" choisissez "Aucun".
1
çağrı Gündüz