Hoe kan ik een DLL overschrijven?
Door Michiel van Otegem
28 mei 2001
Als een DLL gebruikt wordt
(of is), wordt deze in het geheugen van de server geladen. Voordat je deze DLL
kan overschrijven, moet deze eerst weer uit het geheugen gehaald worden. Per
versie van IIS (en Windows) verschilt hoe je dit moet doen. In Windows NT 4 kun
je verder gebruik maken van Micrsoft Transaction Server (MTX). In Windows 2000
is dit Windows Component Services (WCS) geworden. Hieronder staat een overzicht
van de verschillende mogelijkheden en wat je moet doen.
IIS versie 3 (zonder MTX)
Om de DLL uit het
geheugen te halen moet je de webservice stoppen. Dit kan je doen d.m.v. Control
Panel->Services of via de Internet Service Manager. Nadat de webservice
gestopt is, kan je de DLL overschrijven Als de webservice herstart, wordt bij
elke nieuwe aanroep de nieuwe DLL gebruikt.
IIS versie 4 (zonder MTX)
Als de DLL niet
geregistreerd is als een MTX pakket en de website(s) die de DLL gebruiken
draaien niet in een aparte geheugenruimte (controleer dit met de
Internet Service Manager), dan moet je dezelfde handelingen verrichten als met
IIS 3 moet gebeuren. Gezien de complexiteit van de webservice in IIS 4, is de
makkelijkste manier om de webservice te stoppen en te starten via Control
Panel->Services.
Als de DLL niet geregistreerd
is als een MTX pakket en de websites die de DLL gebruiken allen in een
aparte geheugenruimte draaien, zal het stoppen van deze websites voldoende
zijn. De DLL zal overschreven worden en de sites kunnen herstart worden.
IIS versie 4 (met MTX)
Als de DLL wel als een MTX pakket geregistreerd is, dan zal de DLL uit het geheugen
gehaald worden na het aantal minuten dat is ingesteld met de Transaction Server
Explorer voor dat pakket, waarna je de DLL kan overschrijven. Als de DLL nog
niet uit het geheugen gehaald is, kan je dat forceren door dit uit het geheugen
te halen en vervolgens Shutdown te kiezen met Transaction Server
Explorer(rechts klikken op een pakket). Nadat de nieuwe DLL op zijn plaats is,
kies dan Refresh All Components (rechts klikken op de computer met de DLL).
Er zit echter een addertje
onder het gras.....de nieuwe DLL moet gecompileerd worden met binaire
compatibiliteit met de oude DLL. Als je dit niet doet, moet je de oude DLL
uit MTX verwijderen en de nieuwe DLL plaatsen, registreren en vervolgens
importeren naar het juiste pakket.
IIS versie 5 (zonder WCS)
IIS 5 zonder WCS geeft een behoorlijk probleem. Hier wordt de DLL pas vrijgegeven
als de machine opnieuw wordt opgestart. Dit is eventueel te verhelpen door de
websites die de DLL gebruiken in een aparte geheugenruimte te laten werken.
IIS versie 5 (met WCS)
In feite is dit precies dezelfde situatie als IIS 4
met MTX. De component manager is nu echter te vinden onder Control
Panel->Administrative Tools->Component Services. Let op! Ook hier moet de
nieuwe DLL binair compatibel zijn met de oude DLL.
|