Toon posts:

[.Net] dll-aanroep werkt niet in webapplicatie

Pagina: 1
Acties:

Verwijderd

Topicstarter
beste Tweakers,

Ik probeer in een .Net webapplicatie een dll op te roepen. Daarin staat een interface en een klasse. De code in mijn webapplicatie is als volgt:

code:
1
2
3
Dim objASSO As SYSU46D.IASSO10

objASSO = DirectCast(New SYSU46D.CASSO, SYSU46D.IASSO10)


Voor alle duidelijkheid: Casso is de klassen die de interface IASSO implementeert. Maar die staan in een dll waar ik niets aan kan veranderen.

De fout die ik krijg is:
InvalidCastException: Specified Cast is not valid.

Het rare aan het probleem is dat het bij een gewone windowsapplicatie wel gaat. Ik dacht dus dat het om rechten gaat. Daarom heb ik met impersonate gewerkt. Dat hielp niets. Dan maar iedereen lid maken van de administrators groep (security :)). Maar dat werkte ook niet!

Weet iemand iets wat ik nog kan proberen, of waar het aan kan liggen?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Volgens .Net probeer je een klasse van type IASSO10 naar een verkeerde (niet passende) doel klasse te casten wat niet gaat.
Controleer even of een CASSO wel een IASSO10 type aankan.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
In vb6 werd altijd het volgende gedaan:

Dim objAsso as IASSO10
Set objAsso = New Casso

Dat heeft hier blijkbaar altijd gewerkt. Maar nu we met .Net proberen lukt het helemaal niet.

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
waarom doe je niet direct:

code:
1
objAsso = new Casso()

maar dan in de VB.NET equivalent.

Ben je echter wel zeker dat die Casso die interface implementeert ?

https://fgheysels.github.io/


Verwijderd

Topicstarter
Daar ben ik zeker van. En er wordt een object aangemaakt van die interface omdat die klasse geen methoden heeft. (Ik vind het heel raar. Weet niet hoe die klassen eruit zien, en mag het ook niet weten (security))

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
:?
Dat kan niet.
Als die interface methods heeft, dan moet dat object die methods ook hebben als dat object die interface implementeert.
Dat is net het doel van zo'n interface. Die interface is een contract die zegt: dat object heeft die methods.
Is dit niet het geval, dan is dat object niet van het type van die interface, en is het logisch dat die cast failed.

Die DLL, is dat een DLL die jullie zelf geschreven hebben (binnen jullie bedrijf) ?
Is het een .NET DLL ?

Wat een belachelijk ding is dat nu: je mag niet weten hoe die klasses eruit zien. Je moet toch weten welke public members ze hebben ?

https://fgheysels.github.io/


  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06-2025

Varienaja

Wie dit leest is gek.

Het verschil tussen de meeste webapplicaties en een windows applicatie is dat de webapplicaties als een service draaien. Services worden standaard gestart onder de user LocalService, en die mag soms bepaalde dingen niet. Je kunt ook de service onder een andere account laten starten. Dat regel je op het services-scherm in je windows. Zoek de service uit, bekijk de properties en daar staat onder het tabje 'log on' wat je zoekt.

Ik hoop dat dat helpt.

Siditamentis astuentis pactum.


Verwijderd

Topicstarter
@whoami

Het is geen .Net dll. En wat die methoden betreft, ik denk dat ze private staan in die klassen en public in de interface. Weet het dus niet zeker. Maar ik ben het ook zeker beu dat ik vanalles moet liggen uitzoeken en niet voldoende toegang krijg tot de info (geldt niet alleen hiervoor)

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:02
Een interface beschrijft toch de methods die public zijn ?

https://fgheysels.github.io/


  • pjonk
  • Registratie: November 2000
  • Laatst online: 29-12-2025
Visual Studio 6 heeft zo'n tool OLEView waarmee je interfaces van COM DLL's kan bekijken. De tool staat bij mij in "C:\Program Files\Microsoft Visual Studio\Common\Tools\OLEVIEW.EXE".

Afbeeldingslocatie: http://home.quicknet.nl/qn/prive/jonkie.xl/gotimg/interface.png

Misschien dat je daarmee wat wijzer kan worden.

[ Voor 6% gewijzigd door pjonk op 30-12-2005 15:49 ]

It’s nice to be important but it’s more important to be nice


Verwijderd

Topicstarter
Heb het ondertussen gevonden

in het page-directive ASPCompat="true". Op die manier werken oudere objecten nog wel
Pagina: 1