Mit ASP.net auf eine Klassenbibliothek zugreifen

JohnDoe

Erfahrenes Mitglied
Hallo Leute,

ich habe in vb.net eine Klassenbibliothek TempKey angelegt. In dieser befindet sich die Klasse class1.
In class1 befindet sich eine Funktion fct_test:

Code:
Namespace meineControls
    Public Class Class1
        Public Function fct_test(ByVal wert1 As Integer, ByVal wert2 As Integer) As Integer
            Dim ergebnis As Integer
            ergebnis = wert1 + wert2
            Return ergebnis
        End Function
    End Class
End Namespace

Ich habe daraus die DLL kompiliert und die DLL in den Assembly-Cache geladen. Das hat auch wunderbar funktioniert.
Nun möchte ich zum Testen via ASP.net diese Funktion nutzen. Wert1 und Wert2 sollen dabei von der ASP-Seite übergeben werden.
Leider mache ich sowas zum ersten mal mit VB.net. Bisher habe ich nur in VB6 mit ActiveX gearbeitet.
Ich habe es jetzt wie folgt versucht:

Code:
<%@ Page Language="VB" Debug="True" Strict="True"%>
<%
Declare Function fct_test Lib "TempKeyGenProNextCom.dll" alias "fct_testa" (ByVal wert1 As Integer, ByVal wert2 As Integer) As Integer
'response.write fct_test(1,2)
%>

Leider ohne Erfolg. Er sagt dann, dass dieser Befehl in einer Methode nicht möglich ist.
Als Server fahren wir einen W2K-Server mit .net Framework 1.1 und 2.0 installiert.

Damke im Voraus für eure Hilfe...
 
Du hast da eine unmanaged Assembly und keine managed Library auf die du da zugreifst.

Du musst einfach nur eine Referenz zu deinem Projekt hinzufügen und schon kannst du ganz normal darauf zugreifen.

Code:
Dim muh as Class1
Dim result as Integer

result = muh.fct_test(17,20)

Oder so ähnlich halt.

In den GAC (Global Assembly Cache) musst du die Assembly nicht kopieren. Wenn du eine Referenz einbindest, dann wird diese automatisch in das bin-Verzeichnis kopiert und das reicht für gewöhnlich.
 
Ich schreibe die ASP-Seite nur mit dem Notepad-Editor.

Kann ich die irgendwie damit auch einbinden?
 
Via using blablabla und dann beim Kompilieren den entsprechenden Parameter setzen. Sonst nimm einfach die Web Developer Express Edition.
 
Geht es nicht mehr, den ASP-Code direkt in eine .aspx datei zu schreiben? Ich brauch diese Funktion später nur, um mir einen Wert auf der ASP-Seite berechnen zu lassen. Der rest wäre ganz normaler asp-code.
 
Natürlich kannst du den Code auch in eine aspx schreiben. Aber wenn du eine Methode einer externen Assembly verwendest, dann musst du diese auch deinem Projekt als Referenz hinzufügen.
 
Danke erstmal für die schnelle Antwort.

Wie meinst du dass, dem Projekt zuweisen. Ich habe die Klassenbibliothek kompiliert und dann über die .net-Verwaltung in den Assembly-Cache geladen.
Dann wollte ich eigentlich via Notepad eine.aspx-Datei erzeugen und dort wie in normalen ASP den Code schreiben.
Ein Projekt im Sinne von Visual Studio habe ich da doch nicht.
Geht das nicht mehr, wie in ASP, dass man durch einen Befehl auf eine DLL zugreifen kann.
Vor .net ging das doch mit createserverobject("dll.modul").

Gibt es da keine Möglichkeit. Ich wollte das so einfach wie möglich halten...
 
Wie ich in meiner ersten Post schon geschrieben habe. Du musst zwischen
  • managed und
  • unmanaged
Code unterscheiden. Alles was unter .NET läuft ist managed und verhält sich ein wenig anders als beispielsweise eine C++ Class Library. Für den genauen Unterschied bitte Googlen, hab jetzt keine Zeit, das alles zu erklären.

Auf jeden Fall ist es nicht notwendig, die Klassenbibliothek in den Global Assembly Cache zu legen. Und selbst wenn du das tust, hast du noch keinen Verweis drauf.

Du musst in deinem Code-Behind File zur ASPX eine Angabe darüber machen, dass du diese Klassenbibliothek einbinden willst. Das machst unter C# mit using, unter VB.NET mit Imports. Beim Kompilieren musst du dann als Referenz auf die entsprechende DLL verweisen.

Tipp:
  1. Entsprechendes Buch kaufen
  2. Programmierumgebung verwenden - gibt es sogar gratis
 
Danke nochmal für deine schnelle Antwort.

Ich habe jetzt angefangen, dass Projekt im VisualStudio.net zu erstellen.
Ist für mich nur eine ziemliche Umstellung.
Im Prinzip muss ich das erst vo null an lernen.
Das fängt schon mit der einfachen Frage an: Wenn ich auf den Button cmd_ausfuehren klicke, soll er die Werte an eine neue Form, sprich Seite übergeben, welche dann eine neue Maske aufbaut und operationen durchführt.
Kannst du mir ein gutes EBook oder eine Internetseite mit Starthilfen empfehlen?

Ich habe den Inhalt der Klasse einfach mal in eine neue Klasse innerhalb des Projektes gelegt und dann versucht, darauf zuzugreifen.
Leider kam dann der Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt." auf der Seite.

Ich habe die Klasse folgendermaßen angesprochen:
Code:
    Private Sub cmd_generatekey_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_generatekey.Click
        Dim test As cls_generatekey
        lbl_key.Text = test.generate(12, 23)
    End Sub
 
Zurück