52 votes

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 dans un fichier HTML qu'il affiche ensuite dans une iFrame.

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

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: 80070005 l'Accès est refusé. (Exception de HRESULT: 0 x 80070005 (E_ACCESSDENIED))

J'ai cherché dans le registre CLSID correspondante et a trouvé un dossier correspondant. J'ai ajouté le plein contrôle pour le compte IUSR_ et en raison de la persistance de l'erreur que j'ai finalement ajouté le plein contrôle de "tout le monde" et le fait que ces autorisations héritées vers le reste du dossier. J'ai ensuite ajouté le plein contrôle de compte IUSR_ et encore par la suite ajouté le plein contrôle de "tout le monde" mon dossier microsoft office.

Je ne sais pas ce que les autres autorisations à accorder et où pour faire de cette "Accès refusé" erreur de s'en aller. Je dois être l'octroi de mer au mauvais endroit, car autant que je sais que je peux pas être plus permissive que "tout le monde" "Contrôle total".

Quelqu'un peut nous donner un indice?

64voto

user863905 Points 449

Ok, j'ai résolu ce problème en procédant comme suit:

  1. Dans la ligne de commande, mettez DCOMCNFG
  2. Développez Racine de la console> Service de composant> Ordinateurs, cliquez avec le bouton droit sur Poste de travail, puis 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. Ajouter 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.

52voto

gyosifov Points 100

Cela a fonctionné pour moi:

  1. Dans la ligne de commande mis DCOMCNFG
  2. Les Services de composants -> Ordinateur -> poste de travail -> configuration DCOM
  3. Trouver "Microsoft Word 97 - 2003 Document" (Si elle est manquante vérifier si votre Mot est aussi 64 bits (si votre Windows est))
  4. Clic droit -> Propriétés
  5. Accédez À l'Onglet de Sécurité et de Modifier le "Personnaliser" boutons radio, de sorte que IIS_IUSRS pourrait avoir les droits pour le lancement et l'accès
  6. Accédez à l'Onglet Identité et de choisir "L'utilisateur interactif"
  7. Appliquer les modifications et essayez à nouveau
  8. Si tout cela échoue, aller à l'onglet "Général" et "Niveau d'Authentification déroulant" choisissez "Aucune".

13voto

Jim Flood Points 2109

Regarde dans l'Observateur d'Événements, en vertu de Journaux Windows, le Système, sur le serveur de la machine où est installé. Voyez-vous un événement enregistré qui lit quelque chose de similaire à:

La machine d'autorisation par défaut les paramètres de ne pas accorder d'Activation Locale l'autorisation pour le Serveur COM application avec le CLSID {148BEE7F-6123-41EE-8CCA-E390902BD0D8} pour 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é en utilisant les Services de Composants outil d'administration.

Dans ce cas, exécutez DCOMCNFG.EXE et aller pour les Services de Composants, Ordinateurs, Mon Ordinateur (ou tout autre nom), DCOM Config (et vous pouvez juste répondre "Non" si il vous demande si vous souhaitez corriger quoi que ce soit) et si le message du journal des événements est pour une application, puis de trouver le nom dans le message du journal des événements, ici, par le nom de l'article, et si le message du journal des événements est un CLSID (comme dans l'exemple ci-dessus), puis de le retrouver par la CLSID "{148B...}"(c'est juste un hasard CLSID j'ai collé dans -- il sera probablement correspondre à votre 000209FF... ci-dessus), et sélectionnez autres actions... Propriétés, dans l'onglet Sécurité.

Ici, vous pouvez sélectionner [x] Personnaliser et de Modifier, d'ajouter la permission pour le compte d'utilisateur approprié pour activer et accéder à la nécessaire application DCOM ou de la classe.

C'est juste une supposition, mais lui donner un essai, ou quelque chose le long de ces lignes (c'est à dire l'octroi de l'accès à la CLSID via DCOMCNFG).

-2voto

Madhu Points 9

http://www.vbforums.com/showthread.php?657928-failed-due-to-the-following-error-80070005-Access-is-denied .

Le lien ci-dessus fonctionne aussi vraiment pour moi, je conseille à quelqu'un de le suivre.

--Madhu

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X