Avatar billede irsild Nybegynder
21. marts 2006 - 12:11 Der er 26 kommentarer og
1 løsning

Kald af dll i asp.net c#

Jeg arbejder i vs .net 2003. Jeg har en dll, som jeg prøver at kalde via dllimport.
Jeg har testet den i en windowsapplikation og der virker det fint. Men ikke i min asp.net-applikation.

Hvordan registrer jeg en dll i en asp.net?
Jeg har prøvet at registrer dll´en med LoadLibrary, men når jeg kalder den metode fryser browseren?
Avatar billede dr_chaos Nybegynder
21. marts 2006 - 12:12 #1
Det nemmeste er at tilføje en reference til filen.
Avatar billede irsild Nybegynder
21. marts 2006 - 12:15 #2
Hvordan? Jeg har lagt dllén i bin, men det er vel ikke nok?
Avatar billede dr_chaos Nybegynder
21. marts 2006 - 12:18 #3
Det bør det være.
Men du skal huske at bruge using ditnamespace i toppen af siden.
Avatar billede ladyhawke Novice
21. marts 2006 - 12:19 #4
Add reference (i solution explorer) -> browse til din dll og sæt property til copy local (eller hvad den nu hedder). Så kan du skrive using "dll-navn" og har derefter adgang til metoder etc. i dll'en
Avatar billede ladyhawke Novice
21. marts 2006 - 12:19 #5
copy local betyder at dll'en blæiver kopieret til bin automatisk...
Avatar billede ladyhawke Novice
21. marts 2006 - 13:36 #6
I fald du kan bruge svaret
Avatar billede snepnet Nybegynder
21. marts 2006 - 16:51 #7
hvad er det for en komponent du forsøger at benytte, og er du sikker på at den er unmanaged, og ikke er en com-komponent?
mvh
Avatar billede irsild Nybegynder
22. marts 2006 - 09:43 #8
Det er en dll lavet i delphi, så det er vel managed kode. Jeg ved ikke hvordan den er bygget. Den virker i en winapplikation. Burde den så ikke også virke i ASP.net?
Avatar billede irsild Nybegynder
22. marts 2006 - 09:45 #9
nej, delphi er vel unmanagede
Avatar billede ladyhawke Novice
22. marts 2006 - 09:47 #10
Har du added den angivne reference i solution explorer?
Avatar billede davidfossil Nybegynder
22. marts 2006 - 10:47 #11
Følgende er et kodeeksempel hvor jeg kalder en Delphi funktion fra C# vha. "platform invoke".
Delphi library DLL filen er smidt i bin mappen - ingen referencer eller registrering er nødvendig.

------------------

using System;
using System.Runtime.InteropServices;
using System.Text;

public class Activation : System.Web.Services.WebService
{
    [DllImport("sn.dll", EntryPoint="getSn")]
    private static extern void GenerateActivationCode(string runtimeCode, uint users, uint expiryDate, uint productID, StringBuilder SerieNummer);
   
    public static string GenerateActivationCode(string runtimeCode, uint users, uint expiryDate, uint productID)
    {
        StringBuilder sBuilder = new StringBuilder();
        GenerateActivationCode(runtimeCode, users, expiryDate, productID, sBuilder);
        return sBuilder.ToString();
    }
}
Avatar billede davidfossil Nybegynder
22. marts 2006 - 10:49 #12
Prøvede at rydde op i koden før jeg postede, men missede lige at klassen nedarver fra WebService. Denne del kan du blot slette, såfremt du da ikke skal bruge metodekaldet i en webservice.
Avatar billede irsild Nybegynder
22. marts 2006 - 12:07 #13
davidfossil: Jeg har en "dummy" dll, som jeg har kaldt på samme måde og det virker fint. Men den dll, som jeg så ikke kan få til at virke, virker fint fra en windowsapplikation. Så der må være forskel på at kalde den i en winform / webform?

Det er ikke nødvendigt at kalde LoadLibrary() eller FreeLibrary() for registrer dll´en?
Avatar billede irsild Nybegynder
22. marts 2006 - 12:13 #14
Jeg  har prøvet at "Add reference", men det kan jeg ikke. Får fejl. Men det skulle så heller ikke være nødvendigt.
Avatar billede irsild Nybegynder
22. marts 2006 - 15:40 #15
Er der forskel på at kalde en dll fra en windowsapplikation og en webapplikation?
Avatar billede dr_chaos Nybegynder
22. marts 2006 - 17:37 #16
Det bør der ikke være.
Avatar billede snepnet Nybegynder
23. marts 2006 - 00:06 #17
det kan være det er et sikkerhedsproblem måske.... det er en rettighed at have lov til at kalde unmanaged code (når man er en assembly altså :o).
mvh
Avatar billede irsild Nybegynder
23. marts 2006 - 09:57 #18
ok, I min webapplikation får jeg denne fejl "External component has thrown an exception", men ikke i winapplikationen.
Avatar billede snepnet Nybegynder
23. marts 2006 - 12:22 #19
kan du ikke sætte en try/catch rund om kaldet, og så debuge dig ned igennem. så kan du dels se hvad det er for et kald der kikser, og hvis du overfører parametre til en metode i den eksterne komponent - kan du også checke om de er som forventet (som i din winapp).
mvh
Avatar billede irsild Nybegynder
23. marts 2006 - 16:56 #20
OK. Nu har jeg en ny version af en dll. Problemet var der stadig. Men hvis jeg give dll et andet navn virker den. Kan det være webserveren der Cacher dll´en. I så fald, hvordan kan jeg lave det om?
Avatar billede snepnet Nybegynder
23. marts 2006 - 18:27 #21
der kan godt være cachingissues i den forbindelse.... hvad hedder dll'en?
mvh
Avatar billede irsild Nybegynder
23. marts 2006 - 20:27 #22
Den hedder DllCode.dll
Avatar billede snepnet Nybegynder
24. marts 2006 - 02:43 #23
ok... det lyder jo ikke så dramatisk :o)
hjælper det hvis du genstarter iis'en?
mvh
Avatar billede irsild Nybegynder
24. marts 2006 - 09:54 #24
Ja, hvis jeg kører iisreset, så virker det, så den cacher dll.
Avatar billede davidfossil Nybegynder
24. marts 2006 - 23:14 #25
så lærte jeg da også noget i dag! :)
Avatar billede irsild Nybegynder
01. maj 2006 - 12:40 #26
Point til snepnet
Avatar billede snepnet Nybegynder
01. maj 2006 - 15:55 #27
så lægger jeg et svar :o)
mvh
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