web-dev-qa-db-fra.com

Echec de l'exécution du serveur (exception de HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE))

J'essaie de convertir un fichier .xls en un fichier .xlsx sur le serveur en utilisant la classe Microsoft.Office.Interop.Excel.Workbook comme suit:

 workBook.SaveAs("FILENAME_HERE", XlFileFormat.xlOpenXMLWorkbook, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlNoChange, Microsoft.Office.Interop.Excel.XlSaveConflictResolution.xlLocalSessionChanges, Type.Missing, Type.Missing, Type.Missing, Type.Missing);

et j'obtiens l'erreur suivante:

Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)). : System.Runtime.InteropServices.COMException (0x80080005): Retrieving the COM class factory for component with CLSID {00024500-0000-0000-C000-000000000046} failed due to the following error: 80080005 Server execution failed (Exception from HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)).
   at System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)
   at System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)
   at System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] props, Boolean bNewObj)
   at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
   at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
   at System.Activator.CreateInstance(Type type, Boolean nonPublic)
   at System.Activator.CreateInstance(Type type)
   at CALLING_METHOD_IN_MY_LIBRARY_HERE...

Le problème est que cette erreur se produit uniquement sur le serveur de transfert. sur ma machine locale cela fonctionne bien. 

Choses que j'ai essayées sur le serveur de transfert:

  1. ** 1) Exécuter dcomcnfg open Component Services

2) Développez Services de composants "->" Ordinateur "->" Mon ordinateur "->" Configuration DCOM ".

3) Trouvez "l'application Microsoft Excel".

4) Droite pour ouvrir la boîte de dialogue Propriétés

5) Cliquez sur l'onglet "Sécurité",

6) «Autorisations de lancement et d’activation, configuration des autorisations, ajout d’autorisations - Identité exécutée sous Utilisateur administrateur (Cet utilisateur), Utilisateur interactif et Utilisateurs lanceurs

7). Autorisations de lancement et d'activation + Autorisations d'accès + Autorisations de configuration => ajouté IIS_IUSRS + Service réseau avec contrôle total **

2 . Modification de la construction du projet qui convertit le fichier .xls de "Any CPU" en "x86" sur mon ordinateur local et publication de cette bibliothèque sur le serveur.  

Quelqu'un a-t-il compris comment résoudre ce problème? Je me bats sur résoudre ce problème depuis 2 jours maintenant. 

23
Tamas Ionut

Utilisation de DCOMCNFG.exe. Ouvrez-le et accédez à: Services de composants -> Ordinateurs -> Poste de travail -> Configuration DCOM -> Application Microsoft Excel

Ouvrez les propriétés, sélectionnez l'onglet Identité et sélectionnez l'utilisateur interactif.

22
Vladimir Shiyanov

J'ai trouvé cet article qui décrit plus en détail ce problème. Si cela vous aide, l'erreur «80080005 - Échec de l'exécution du serveur (exception de HRESULT: 0x80080005 (CO_E_SERVER_EXEC_FAILURE)») peut se produire pour les raisons suivantes:

  1. La machine a une charge de processeur élevée et le processus prend beaucoup de temps à démarrer Il ne parvient pas à exécuter CoRegisterClassObjects () en moins de. 120 secondes.
  2. Le serveur COM ne s'inscrit pas pour les bons ID de classe.
  3. Le serveur COM est en cours d'arrêt et il existe une condition de concurrence critique Entre CoCreateInstance et la partie d'arrêt du serveur COM.
  4. Il y a un problème de sécurité dans le mode de démarrage du serveur COM (Cette page semble suggérer des mots de passe mal orthographiés ou le privilège "Connexion en tant que travail par lots" est manquant pour les serveurs COM "Exécuter en tant que", mais De toute façon, je suggérerais de revérifier ces informations pour votre configuration spécifique )

https://blogs.msdn.Microsoft.com/adioltean/2005/06/24/when-cocreateinstance-returns-0x80080005-co_e_server_exec_failure/

2
ChiragMM

J'ai résolu ce problème avec cette solution: Cliquez avec le bouton droit de la souris sur Services de composants/Ordinateurs/Config DCOM/Microsoft Word97 - Document 2003properties/General Tab

définir le niveau d'authentification: Aucun

1
Ghadir Farzaneh

Le même problème a été résolu pour moi en "permettant l'interaction de bureau" pour le service. (dans l'outil de configuration Tomcat6w sous l'onglet Connexion)

0
Gabor