La communauté ALL HTML c'est 60442 membres à ce jour dont 0 inscrits aujourd'hui et 5 depuis une semaine.

  • imprimer
  • aide

Forum de discussions « ASP.NET »

Retrouvez les publications relatives à ces discussions dans notre rubrique .net.

Appel en ASP d'une dll C SHARP

liste des forums liste des discussions Participer à la discussion

Photo de MGigi Message publié le jeudi 23 octobre 2003 à 09 h 31 par MGigi.
Bonjour,

Je rencontre un problème et ne sais comment le résoudre.

Je veux appeller une dll C sharp dans une page asp, mais pas une page asp.net
Je n'ai pas trouvé beaucoup de renseignements sur l'appel de composant .net à partir de page asp et je me demande même si cette opération est possible.

Donc, si quelqu'un sait si on peut appeller une dll .net (c sharp, vb.net...) en langage asp? Si oui, comment le faire?

MGigi

PS: ma dll C Sharp est bien enregistré sur l'ordinateur qui interprete les pages asp mais l'appel de createobject(nomdll.class) me dit perpétuellement que ma dll n'est pas trouvée.
Photo de djobbinskaya Message publié le jeudi 23 octobre 2003 à 10 h 42 par djobbinskaya. Ombres et poussières...!!
Salut Tous le monde,

Bienvenue Marina!!! [:o)]

Bref je vais supposer que tu vas travailler avec ASP 3.

Je vais commencer par une petite introduction grammaticale si cela ne vous dérange pas?

Les "Assembly" sont l'équivalent des objets "COM" ce sont en outre des DLLs mais leurs structures iternes n'est pas la même.

Pour utiliser un objet quelconque et spécialement une DLL (que ce soit assembly ou COM) il faut avoir un point de référence par ou le programme appelant peut accéder à la DLL et à ces classes.

Avant l'existance de l'environnement .NET et le framework, l'enregistrement (à l'aide de regsvr32.exe qui existe toujours) de la DLL dans la base des composants était parfois obligatoire mais pas tout le temps la première innovation du framework est que nous pouvons utiliser les DLLs (Assembly) sans avoir à les enregistrer mais en spécifaint leur chemin (/bin) par exemple.

Je vais t'exposer 3 cas de figure qui peuvent t'intéresser :

1 - DLL en C#(.NET) appelée par une application .NET (web froms ou windows forms) :

Tu crée un nouveau projet de type Class Library
En le débuggant ou en faisant un build tu crée déjà ta DLL qui est en fait un Assembly.
Dans ton projet appelant tu fais un "Add Reference", tu ajoute une référence en clicquant avec le bouton droit de la souris sur l'icône "References" dans l'explorateur de projets. Dans la fenêtre qui apparaitra tu choisi l'anglet "Projects" et tu fais un "Browse" et tu choisi la DLL en question.

Une fois ta DLL est référencée dans ton projet eh ben tu ajoute dans ton code la directive using dans l'entête de la page de code :

using MyDLL;

Et le tour est joué.

2 - DLL en langage autre que .NET appelée par une application .NET (web froms ou windows forms) :

Tu dois savoir que les objets manipulés par les versions antérieurs du Visual Studio ou des autres langages ne sont forcément pas les même que .NET. Par exemple les types de variables dans le VS C++ n'existe pas tous dans C# ainsi pour pouvoir utiliser une DLL écrite avec VS C++ par exemple il faut la convertir en Assembly cette opération se fait en désassemblant la DLL et en la réassemblant encore mais avec la structure .NET. Tout cela peut paraître méga difficile eh ben c'ests pas le cas pour ce faire tu aura recourt à 2 DLLs : DllImport.dll et PInvoke.DLL (Platform Invoke) je ne m'attarderai pas sur ce point mais sur les sites de Microsoft y'a des explications et des exemples très claires : msdn.microsoft.com

3 - DLL en C#(.NET) appelée par une application Win32 ou ASP :

Comme pour le 2éme cas dans lequel on doit convertir la DLL à la structure du .NET eh ben dans notre cas on doit convertir la DLL (Assembly) doit s'adapter à nos besoins en l'occurence devenir un objet COM. L'opération est très simple :

Dans l'explorateur de projets tu clique avec le bouton droit de la souris sur l'icône du projet lui même et tu choisi l'option "Properties" (Propriétés) dans la fenêtre qui s'affichera tu choisi l'option "Configuration properties" à droite et en bas de la fenêtre tu trouvera un paramètre "Register For Com Interp" qui par défaut a la valeur "false" tu la mets alors à "true" et tu valide.

Maintenant en faisant un build de ton projet "Class Library" tu aura une DLL 100% COM. Et si jamais tu essai de l'utiliser dans une application .NET tu te trouve ainsi dans le cas N°2 que j'ai exposé.

Maintenant, et je crois que c'est le troisième cas qui t'intéresse, si tu veux utiliser ta DLL dans une page asp tu dois l'enregistrer en appyant sur le bouton "Démarrer" de windows puis "Exécuter" et en tapant "regsvr32 MyDLL.Dll" en lui donnant tout le chemin bien sur.

Une fois ta DLL est enregistrer dans ta page ASP tu n'as qu'a instancié ta DLL en écrivant un code qui ressemble au suivant :

<%
Set MyObj = Server.CreateObject("MyDLL")
%>

Une fois ta DLL est instanciée tu peux utiliser comme bon te semble les fonctions qui sont à l'intérieur.

J'espère avoir été clair et surtout j'espère avoir répondu à ta question.

Good work everybody.

P.S.: Excuse moi je n'ai pas lu cette question en premier mais l'autre alors j'ai répondu à la deuxième et la je te répond directement. Essaie de suivre mon raisonnement et si t'as toujours des probs fais nous signe d'accord!!! [;)]

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions