Avatar billede repsak Nybegynder
22. marts 2003 - 18:32 Der er 20 kommentarer og
1 løsning

Kan ikke finde dll

Hey
Jeg har læst en masse artikler her på sitet om at forbinde en hjemmelavet dll til min aspx side, men uden at det vil lykkedes for mig.
Jeg har en dll som hedder "hej.dll". den har jeg placeret på web-serveren i /bin/hej.dll.

min codebehind der således ud (C#)

public class Handler : Page {
protected Label Label1;
protected void Button1_Click(Object sender, EventArgs e){
Label1.Text = hej.Test.get();
}
}

og i min aspx fil står
<%@ Page Inherits="Handler" Src="code.cs" %>

Jeg har set et sted noget med
<%@ Import Namespace="hej" %>
men kan ikke lige lure hvordan og hvorledes...?

Compileren siger "CS0246: The type or namespace name 'hej' could not be found (are you missing a using directive or an assembly reference?)"
Avatar billede disco_keld Nybegynder
22. marts 2003 - 18:38 #1
husk at ligge din dll i bin folderen....

ellers under Inherits er det assemblyname.classname

f.eks.

<%@ Page
        Language="vb"
        AutoEventWireup="false"
        Codebehind="Default.aspx.vb"
        Inherits="Assembly.Class"

Og hvis det er en anden assembly end så smid det her i toppen af din aspx fil:

<%@ Register
        TagPrefix="Wrox"
        Namespace="Wrox.ThePhile.Web.Controls.Server"
        Assembly="Wrox.ThePhile"
%>

mvh

DK
Avatar billede repsak Nybegynder
22. marts 2003 - 18:52 #2
Jeg er ikke helt sikker på hvad du mener.
hvad betyder
<%@ Register TagPrefix="Wrox" Namespace="Wrox.ThePhile.Web.Controls.Server" Assembly="Wrox.ThePhile"%>?
og hvad skal der stå istedet for Wrox...?

min aspx 'top' så/ser sådan ud
<%@ Page Inherits="Handler" Src="code.cs" %>
Avatar billede disco_keld Nybegynder
22. marts 2003 - 19:29 #3
inherits="handler" er din klasse går jeg ud fra?

hvad hedder din cs klasse ?
Avatar billede burningice Nybegynder
22. marts 2003 - 19:41 #4
repsak>> jeg går ud fra at du skal bruge koden fra hej.dll i din .cs fil?

i så fald skal du skrive

using hej;

i toppen af filen, og ikke noget i din .aspx fil. Derudover skal du huske at fortælle compileren fra hvilken dll-fil du vil bruge kode fra, dette gøres med /r:... altså f.eks. /r:hej.dll
Avatar billede repsak Nybegynder
22. marts 2003 - 19:57 #5
cyberfessor-> tror at du har en god pointe med det sidste du siger! Men hvordan fortæller jeg compileren det? Min fil "code.cs" bliver jo ikke compilet på min comp men på serveren... Hvordan gør jeg? :-)
Avatar billede burningice Nybegynder
22. marts 2003 - 20:04 #6
compilet på serveren ?! uhm... compiler du ikke manuelt din code.cs-fil?  det skulle du til at gøre... og så ændre dit pagedirekiv til følgende

<%@ Page Inherits="Handler" %>
Avatar billede repsak Nybegynder
22. marts 2003 - 20:11 #7
vi taler muligvis forbi hinanden...
Hvis vi antager at jeg har en fil: code.cs som indeholder mine events til aspx-siden. F.eks. button_click(...) osv
Og en fil hej.cs som ER compilet til hej.dll
Jeg har uploadet min dll til /bin/hej.dll og min cs-fil til /code.cs
Inde i min button_click ønsker jeg så at udføre en metode som ligger i hej.dll... Er det ikke meningen at code.cs skal comlipes på serveren...?
Avatar billede burningice Nybegynder
22. marts 2003 - 20:16 #8
repsak>> nej... det er det faktisk ikke meningen.. man kan godt gøre det på den måde, dog miste man muligheden for at kontrolle hvordan compileringen skal foregå... så derfor vil jeg anbefale at gøre det på den "rigtige" måde. Compiler alle dine codebehindfiler til en dllfil, hedder som regel det samme som websitet, f.eks. burningice.dk.dll, og læg den i din bin-mappe sammen med hej.dll.
Avatar billede burningice Nybegynder
22. marts 2003 - 20:18 #9
repsak>> på den måde slipper man også for at uploade sine sourcefiler, og slipper for risikoen at andre får fat i dem.
Avatar billede repsak Nybegynder
22. marts 2003 - 20:48 #10
Så er det lige ved at lykkedes... Men hvordan fortæller jeg aspx'en at den skal hente data fra min fil som nu hedder code.dll?
ikke noget namespace
class = Handler
Avatar billede burningice Nybegynder
22. marts 2003 - 20:55 #11
det skal du ikke fortælle din aspx side... det eneste du skal gøre er at fortælle hviklen klasse den skal arve fra, som altså er din Handler.

altså:

aspx-siden > handler > System.Web.UI.Page

handler bruger noget kode fra klassen test som ligger i namespacet hej.
Avatar billede repsak Nybegynder
22. marts 2003 - 21:05 #12
I'm so close... hvordan fortæller jeg det???
<%@ Page Inherits="Handler.Class" %> = error
<%@ Page Inherits="Handler" %> = error
Avatar billede burningice Nybegynder
22. marts 2003 - 22:00 #13
okay.. lad os tage det fra en ende af :)

du har en klasse der hedder Handler, right?...
ligger den i et namespace?...
har du compilet den til en dll?
har du lagt den dll i binmappen?
Avatar billede repsak Nybegynder
22. marts 2003 - 22:03 #14
ja har en klasse Handler... Ligger IKKE i et namespace (SKAL den det?)
den ER compilet og lagt i bin-mappen. Den ER også linket sammen med min hej.dll og kan compile dette Label1.Text = ""+Test.get();
Avatar billede repsak Nybegynder
22. marts 2003 - 22:12 #15
anyway nu er Handler lagt i et namespace som hedder NetCode!
Avatar billede burningice Nybegynder
22. marts 2003 - 22:21 #16
nej.. den behøver ikke at være i et namespace... det virker bare mere overskueligt hvis den er.. det er lidt ligesom at lægge alle sine filer i roden af c:\ fremfor at sortere dem i mapper ;)

okay.. du har altså kunne kompile din (lad os kalde den NetCode).dll, og den ligger i bin mappen sammen med hej.dll

Så BURDE du kunne skrive følgende

<%@ Page Inherits="NetCode.Handler" %>

på din aspx-side

prøv at paste den error du får her :)
Avatar billede repsak Nybegynder
22. marts 2003 - 22:24 #17
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: Could not load type 'NetCode.Handler'.

Source Error:


Line 1:  <%@ Page Inherits="NetCode.Handler" %>
Line 2: 
Line 3:  <html>
Avatar billede burningice Nybegynder
22. marts 2003 - 23:59 #18
herm... jeg har følgende linje på en af mine sider

<%@ Page Language="C#" SmartNavigation="true" EnableViewState="false" Inherits="www.burningice.dk._default" %>

hvor www.burningice.dk._default er en klasse der er compilet ind i www.burningice.dk.dll som ligger i min bin-mappe

Kan du prøve at paste koden (evt. bare lige starten) fra din codebehind-fil her :)
Avatar billede repsak Nybegynder
23. marts 2003 - 00:26 #19
jo klart :-)

her er den ene:
//---------------------------
using System.Net;
using System.Net.Sockets;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System;
using hej;

namespace NetCode{
    public class Handler : Page {
        protected Label Label1;
        protected TextBox TextBox1;
        protected Socket sck = null;

        protected void Button1_Click(Object sender, EventArgs e) {
            connect();
            Label1.Text = ""+Test.get();
        }

og her er den anden:
//---------------------------
namespace hej{
  public class Test{
 
  public static int get(){
    return 7;
  }
  }
}
Avatar billede burningice Nybegynder
23. marts 2003 - 12:59 #20
herm... jeg har rodet lidt rundt på nettet, og det viser sig at denne fejl typisk kommer når folk enten har glemt at compile sin .cs fil eller lagt den i den forkerte mappe (skal være bin-mappen i roden af ens application). Dette er dog ikke tilfældet her, så en anden fejlkilde kunne være at bin-mappen ikke har de rigtige rettigheder. Prøv at tjek om aspnet-useren har read-permissions, da den jo ellers ikke vil kunne læse dine dllfiler ;)
Avatar billede burningice Nybegynder
24. maj 2003 - 12:48 #21
når jeg skriver /bin, så referer /'et til RODEN af din applikation, dvs. i de fleste tilfælde roden af dit website.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester