Einbindung einer unmanaged legacy DLL in ASP.NET Web Service

23/10/2008 - 15:45 von Merwed | Report spam
Ich binde eine unmanaged DLL (kein COM, Quelltext liegt nicht vor, per
DllImportAttribute) in eine Windows-Anwendung ein und alles funktioniert
super. Benutze ich die gleiche DLL in genau der gleichen Verwendung mit
einem ASP.NET Web Service, dann stürzt der IIS (Version 7) ab, Exceptions
werden nicht ausgelöst, ein Fehlerprotokoll des IIS finde ich nicht, im
Eventlog steht nur der Absturz ohne Grund. Irgendwann bekam ich mal eine
StackOverflowException. Inzwischen starte ich die DLL-Routine aus einem
Thread heraus, der genug Stackspeicher definiert. Die Auslösung des Fehlers
dauert immer ein paar Sekunden.

Ich weiß einfach nicht, wie ich weiter vorgehen soll. Hat jemand eine Idee?

Viele Grüße
 

Lesen sie die antworten

#1 Thomas Scheidegger
23/10/2008 - 16:22 | Warnen spam
Hallo Merwed

unmanaged DLL ...mit einem ASP.NET Web Service




1.) fehlerhafte DllImport-Definitionen in C#
können sich je nach 'Umgebung' (Host)
völlig anders (fataler) auswirken.
PInvoke hat Null-Fehlertoleranz!
Deine DllImport _müssen_ einfach schon 'by design' stimmen,
man kann sich keinesfalls auf Compiler/Debugger-Fehlermeldungen
usw verlassen.

2.) nicht jede DLL ist geeignet,
um überhaupt im Kontext von ASP.NET / IIS / Service
zu laufen.
Der DLL-Hersteller muss dies ausdrücklich garantieren,
ansonst DLL besser nicht so verwenden!





Thomas Scheidegger - 'NETMaster'
http://dnetmaster.net/

Ähnliche fragen