Up- en download met IIS
Onlangs kwamen we op het werk achter een probleem dat ons up- en download mechanisme plotseling merkwaardigheden vertoonde.
Het enige dat was gewijzigd in de afgelopen tijd was de server, een behoorlijk grote wijziging dus.
Na lang zoeken naar het probleem werd er geconstateerd dat bestanden van ongeveer 4MB wel konden worden gedownload, maar groter niet.
Met deze informatie kun je lekker zoeken op internet, niet dus. Toch is er een oplossing gevonden.
De IIS-webserver werkt namelijk met een bestandje genaamd metabase.xml. In dit bestand staat de configuratie van de webserver, welke je hier ook kunt wijzigen.
Het metabase.xml
bestand staat in de system32-map van de server, bijvoorbeeld C:\WINDOWS\system32\inetsrv\\metabase.xml
Om de download limiet te verhogen zoek je het element AspBufferingLimit
op. Standaard staat deze ingesteld op AspBufferingLimit="4194304"
(bij ons tenminste). Dit getal kun je verhogen (of verlagen) naar het aantal bytes dat je graag als maximum wilt opgeven.
Ok, dit is waarschijnlijk niet nodig als je gewoon een bestand uit een map wilt downloaden, maar wel als je een binair bestand uit een database wilt downloaden. Dan heb je een iets grotere buffer nodig als 4MB.
Diezelfde week had ik een probleem met het uploaden van bestanden met een uploadmodule bij een klant. Hier konden niet bestanden worden geupload die groter waren als 200KB. Nu kun je zeggen dat de klant dan maar FTP moet gaan gebruiken, aangezien HTTP niet voor bestanden uploaden is bedoeld, maar daar zit die natuurlijk ook niet op te wachten.
Omdat ik eerder die week al de informatie had verkregen van het download probleem, dacht ik dat mijn upload probleem ook wel eens in de metabase.xml
opgelost zou kunnen worden.
Dit was ook nog het geval.
Je kunt op zoek gaan naar de tekst AspMaxRequestEntityAllowed
. Hier staat standaard het getal 204800
achter. Ongeveer 200KB dus. Door dit te veranderen in bijvoorbeeld AspMaxRequestEntityAllowed="16777216
kun je ineens 16MB uploaden via een ASP pagina.
Houd er wel rekening mee dat uploaden (en downloaden natuurlijk ook) veel tijd in beslag kan nemen. Let er dus op dat de script time-out ook goed wordt aangepast. Om 16MB te uploaden heb je vaak meer tijd nodig dan de 90 seconden waar de script timeout standaard op staat ingesteld.
Tot zo ver m’n IIS avontuur van vorige week.
Oh ja, ik heb nog wel geconstateerd dat het bestand metabase.xml
niet op alle IIS versies draait. Wel weet ik zeker dat het op een Windows Server 2003 (R2) server aanwezig is.