L'application Excel sur le server ne fonctionne pas si l'user administrateur est déconnecté

J'ai une application ASP.NET qui utilise les assemblages Microsoft Intrope pour lire, écrire et modifier des files excel et utilise Excel 2013 sur machine server. L'application fonctionne bien si je suis connecté à la machine server en tant qu'administrateur mais lorsque je suis déconnecté, l'application ne peut pas initialiser l'application excel. Voici l'exception.

System.Runtime.InteropServices.COMException (0x8000401A) 

L'application fonctionne sur Windows Server 2008R2 avec MS Excel 2013 32 bits. Je ne peux pas comprendre la raison de ce comportement. Est-ce que cela concerne les options de security des objects COM ou il a quelque chose à voir avec les permissions IIS?

La class InteropServices ouvre une instance Excel (invisible) pour effectuer son travail. Excel ne peut pas s'exécuter en tant que service Windows et doit être instancié par un user connecté.

"Microsoft ne recommand pas actuellement, et ne supporte pas, l'automation des applications Microsoft Office à partir d'une application ou d'un composant client non-autonome, non interactif (y compris ASP, ASP.NET, DCOM et NT Services), car Office peut présenter un comportement instable et / ou deadlock lorsque Office est exécuté dans cet environnement. " Consultez cette page pour plus d'informations: Assistance Office: Considérations relatives à l'automation côté server

Si vous souhaitez toujours garder le service d'interopérabilité, essayez de le modifier pour s'exécuter en tant qu'user interactif:

  • Ouvrir les services de composants (Démarrer -> Exécuter -> MMC comexp.msc / 32)
  • Trouver des services de composants -> Ordinateurs -> Mon ordinateur -> Configuration DCOM -> Application Microsoft Excel
  • Clic droit, choisir les propriétés
  • Accédez à l'onglet Identité et choisissez Utilisateur interactif
  • Si cela ne fonctionne pas, vous pouvez essayer d'entrer manuellement les informations d'identification des users

Bien sûr, vous pouvez également passer à un autre cadre pour lire le file. SO: Comment lire un file excel en C # sans utiliser les bibliothèques Microsoft.Office.Interop.Excel

J'ai eu le même problème après avoir migré de 2008r2 à 2012 . Ma solution:

  • Trouver des services de composants -> Ordinateurs -> Mon ordinateur -> Configuration DCOM -> Application Microsoft Excel
  • Clic droit, choisir les propriétés
  • Accédez à l'onglet Identité et choisissez Cet user (input user et mot de passe)