2017-01-11 2 views
-1

Je cherchais une solution à mon problème au cours des deux derniers jours. Maintenant, Google ne me montre que les liens que j'ai déjà visités.System.Runtime.InteropServices.COMException 0x80040154 avec CLSID 29131539-2EED-1069-BF5D-00DD011186B7

je reçois l'erreur suivante:

[COMException (0x80040154): La récupération de la fabrique de classes COM pour le composant avec le CLSID {29131539-2EED-1069-BF5D-00DD011186B7} a échoué en raison de l'erreur suivante : 80040154 Classe non enregistrée (Exception de HRESULT : 0x80040154 (REGDB_E_CLASSNOTREG)).] 
    Default2.initSession() in c:\inetpub\wwwroot\GestionDomino\Default.aspx.cs:45 
    Default2.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\GestionDomino\Default.aspx.cs:32 
    System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 
    System.Web.UI.Control.OnLoad(EventArgs e) +92 
    System.Web.UI.Control.LoadRecursive() +54 
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772 

Je sais qu'il ya une partie de la stacktrace qui est en français. C'est parce que le serveur exécutant ce code est un serveur français.

Voici mon code:

public partial class Default2 : System.Web.UI.Page 
    { 
     Domino.NotesSession lotusNoteSession; 
     Domino.NotesDatabase localDatabase; 
     Domino.NotesView specificView; 

     protected void Page_Load(object sender, EventArgs e) 
     { 

      //authentifies the user 
      checkAuthen(); 
      //opens the domino session 
      initSession(); 
      //fill the gridview 
      if (!IsPostBack) 
      { 
       FillgvVue(); 
      } 
     } 

     protected void initSession() 
     { 
      //opens the domino session 
      lotusNoteSession = new Domino.NotesSession(); 

Et le code continue. Mais j'ai arrêté de le copier à la ligne problématique lotusNoteSession = new Domino.NotesSession(). Cette ligne déclenche l'erreur.

J'ai essayé l'enregistrement Interop.Domino.dll avec regsvr32.exe

Le cpu cible est déjà réglé sur x86

Que dois-je faire?

Merci à l'avance


+0

Au cas où vous n'étiez pas au courant; vous avez un mot de passe en clair affiché. Vous voudrez peut-être l'enlever et demander une révision de récurage de sorte qu'il n'est pas disponible pour toujours. – BradleyDotNET

+0

@BradleyDotNET _ "request revision scrubbing" _ - Je ne pense pas que cela se fasse très souvent. Si cela ne tenait qu'à moi au moins, je répondrais avec "malchance, changez vos mots de passe". D'autant plus que Google indexe ce site en quelques secondes. – CodeCaster

+0

@CodeCaster Vrai, mais IIRC il y avait quelques messages méta indiquant qu'ils le feraient pour ce genre de choses. Changer les mots de passe est toujours une bonne idée. – BradleyDotNET

Répondre

1

Vous devez vous inscrire nlsxbe.dll correctement, aussi. Je suis à peu près certain que j'ai déjà vu des articles sur StackOverflow, mais je ne les trouve pas maintenant.

Cependant, selon ce IBM Technote, les classes COM Notes qui se trouvent dans nlsxbe.dlll et qui sont derrière l'Interop.Domino.dll ne sont pas prises en charge sur un système d'exploitation 64 bits. Ils peuvent être principalement conçus pour fonctionner, mais si vous avez besoin d'une solution sur laquelle vous pouvez compter, vous pouvez consulter les autres API disponibles pour l'environnement Notes/Domino. éviter COM, ou trouver un moyen de les exécuter sur un système d'exploitation 32 bits. En ce qui concerne la partie «la plupart du temps», les problèmes que je me rappelle sont liés aux méthodes qui renvoient des collections d'éléments de conception (par exemple, NotesDatabase.Views()). La plupart des classes et des méthodes semblent fonctionner, y compris celles qui retournent des éléments individuels (par exemple, getView()). Mais encore une fois, il n'y a pas de support officiel pour ces classes sur 64 bits, donc si vous rencontrez d'autres problèmes, vous serez seul.