IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Impossible d’appeler une DLL VB6 en ASP.NET


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de titan_33
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut Impossible d’appeler une DLL VB6 en ASP.NET
    Bonjour

    Je dois utiliser une DLL (objet COM je suppose) écrite en VB6 dont je n’ai pas le source dans une Webform en .NET, version 2.

    Dans mon projet Web, j’ai ajouté une référence COM en sélectionnant la Dll qui se nomme « Cryptage.dll ».

    Dans ma WebForm j’ai mis : " AspCompat="true" dans <@ Page . . . %>

    Dans l’événement Page_Load de ma page je fais appel a une méthode de ma DLL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    string sChaine_a_crypter = "C’est Super";
    string sResult = "" ;
     
    Cryptage.myClass oCrypte = new Cryptage.myClass();
    sResult  = oCrypte.Encryptage(ref sChaine_a_crypter);

    Cependant lors de l’execution de la ligne d’instanciation de la classe Cryptage.myClass();

    J’ai le plantage suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    System.Runtime.InteropServices.COMException (0x80040154): La récupération de la fabrique de classe COM pour le composant avec le CLSID {D47E0DF7-C9BF-11D3-8D59-00C04FA2EC9D} a échoué en raison de l'erreur suivante : 80040154.
       à Frm_aap4x4_A_attestation.Page_Load(Object sender, EventArgs e) dans d:\3wCgo\A__fra\Dev\Dev_A_fr\Frm_aap4x4\A_attestation.aspx.cs:ligne 33
       à System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e)
       à System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e)
       à System.Web.UI.Control.OnLoad(EventArgs e)
       à A_Page.OnLoad(EventArgs e) dans d:\3wCgo\A__fra\Dev\Dev_A_fr\App_Code\A_Page.cs:ligne 120
       à A_Page_aap4x4.OnLoad(EventArgs e) dans d:\3wCgo\A__fra\Dev\Dev_A_fr\App_Code\A_Page-aap4x4.cs:ligne 176
       à System.Web.UI.Control.LoadRecursive()
       à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
    Si quelqu'un peut m'aider, je l'en remercie d'avance.

    Titan

  2. #2
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Par défaut
    et c'est quoi l' erreur 80040154?
    En fait tu as un wrappeur qui se crée pour que .Net puisse communiqué avec COM. je pense qu'il faut que tu trouves le bon nom de classe Cryptage.
    je ne l'ai pas fait souvent mais je pense que c'est un truc dans le genre.

  3. #3
    Membre éclairé Avatar de titan_33
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut Objet COM et ASP.NET
    Sinon dois-je enregistrer ma DLL (ou mon objet COM) dans l'assembly.

    J'ai vu des choses comme cela !!!

    Titan

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par titan_33 Voir le message
    Sinon dois-je enregistrer ma DLL (ou mon objet COM) dans l'assembly.
    Dans l'assembly ? non, mais sur le système oui. Le composant est il enregistré sur le système ? (via la commande regsvr32)

  5. #5
    Membre éclairé Avatar de titan_33
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    245
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 245
    Par défaut
    merci Bluedeep

    Dois-je enregistrer ma DLL avec regsvr32

    Ou bien est-ce fait automatiquement en faisant :
    Dans mon projet Web, j’ai ajouté une référence COM en sélectionnant la Dll qui se nomme « Cryptage.dll ».

    Merci d'avance
    Titan

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par titan_33 Voir le message
    merci Bluedeep

    Dois-je enregistrer ma DLL avec regsvr32

    Ou bien est-ce fait automatiquement en faisant :
    Dans mon projet Web, j’ai ajouté une référence COM en sélectionnant la Dll qui se nomme « Cryptage.dll ».
    Non, tu ne peux exploiter un objet COM non enregistré. Ce n'est pas lié du tout à .Net, c'est le concept même de COM qui implique cela. (de ce point de vue, à l'apparition de .Net, on a tous poussé un "ouf" de soulagement : ce problème d'enregistrement complique énormément les questions de versions de composant, d'utilisation de versions multiples, etc ... on est tous content d'en être débarrassé )

    Dans la pratique, les composants installés via un "installer" (InstallShield, etc ...) sont enregistrés à l'installation; en revanche, si tu mets une DLL sur ton disque elle n'a pas raison de l'être si tu n'es pas passé par une procédure d'installation quelconque; tu dois donc faire l'enregistrement à main avec les commande regsvr32 (ce que fait cette commande est trivial : elle charge la DLL et appelle la fonction RegisterDllServer - idem pour la désinstallation, sauf que dans ce cas, c'est la fonction UnRegisterDllServer qui est appelée )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Stage refonte d'une appli VB6 en ASP.NET
    Par Oxynux dans le forum ASP.NET
    Réponses: 5
    Dernier message: 12/12/2013, 16h54
  2. Comment en VB6 récupérer un ArrayList d'une DLL écrite en VB.Net
    Par BGC_Laurent dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 04/04/2007, 11h08
  3. Réponses: 5
    Dernier message: 16/06/2006, 14h01
  4. Réponses: 9
    Dernier message: 06/04/2006, 18h40
  5. Réponses: 2
    Dernier message: 28/10/2003, 10h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo