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:
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.
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.
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:
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
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)