« (mscorlib)Insufficient system resources exist to complete the requested service | Main | MacBook Air in regalo con un webcontest »
Asp.Net: zip component for free
By Merlinox | June 19, 2008
Da qualche tempo utilizzo un componente free anzi opensource per creare e gestire file Zip in ASP.NET. Il componente / libreria si chiama SharpZipLib, e fino a stamattina andava alla perfezione.
Il mio più grande errore è stato cercare info all’estero su questo componente. Comunque con un po’ di fatica, l’ho implementato e gli zip li fa proprio per bene. Il problema però, non appena il mio prodotto ha iniziato a essere utilizzato bene, è saltato subito all’occhio (del sistemista).
Con file di grosse dimensioni finiva la RAM e il server piazzava un bel memory overflow, o più esattamente: (mscorlib)Insufficient system resources exist to complete the requested service
Disperato, e quasi convinto di dover trovare un altro componente, fortunatamente ho pensato agli amici di HTML.it, e tramite loro ho scoperto il sito .Net2theMax.it!
La spiegazione di tutte le righe la trovate su .net2theMax.it, io voglio solo fare un appunto su qualche riga. La mia precedente procedura prendeva il file da comprimere, e lo sbatteva in un array di byte (più o meno) in questo modo:
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
Praticamente tutto il file in memoria. In una unica botta. Ma se il file è parecchi mega? Fortunatamente la soluzione non era cambiare componente ma sistemare il buffer:
while (fs.Position < fs.Length)
{
bytesRead = fs.Read(mBuffer, 0, mBuffer.Length);
zip.Write(mBuffer, 0, bytesRead);
crc.Update(mBuffer, 0, bytesRead);
}
E il mondo per un po’ a reiniziato a sorridere. Grazie a tutti e al mio amico Franz.
Tags: asp.net, blog, c#, component, free, gratis, zip
Post simili





June 19th, 2008 at 3:27 pm
zio biscio!
June 19th, 2008 at 3:30 pm
ehi john suppongo sia una approvazione, vero?