Hallo Leute,
Ich versuche seit mehreren Tagen eine Datei per Webservice zu verschicken. Leider gibt er mir gegen Ende folgende Fehlermeldung:
Die Datei konnte nicht übermittelt werden.
Folgender Fehler´ist aufgetreten: ICSharpCode.SharpZipLib.SharpZipBaseException: Unexpected EOF
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.Fill()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeByte()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeShort()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeInt()
bei ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNext Entry()
bei innosoft.inno5.isupdater.Zip.UnZip(Byte[] DateiAlsByte, String ZielOrdner, String Passwort, Boolean Ueberschreiben) in D:\inno5.1\Projekte\Win\Standard\ISUpdater\trunk\s rc\Client\Zip.cs:Zeile 70.
bei innosoft.inno5.isupdater.gui.FormMain.btnDownLoad_ Click(Object sender, EventArgs e) in D:\inno5.1\Projekte\Win\Standard\ISUpdater\trunk\s rc\Client\FormMain.cs:Zeile 86.
Ich erstelle ein .zip Datei, die ich sofort in ein byte[] konvertiere, diese dann über einen Webservice schicke und am anderen Ende wieder entpacke. Das meiste davon funktioniert. Leider fehlen meistens 2 Dateien. Die anderen kommen an und befinden sich auch im richtigen Verzeichnis. Ich kriege einfach nicht raus, warum er mir diesen Fehler gibt. Vielleicht könnt ihr mir ja weiterhelfen. Hier ist der Code, den ich zum Unzippen benutze:
Falls diese Informationen nicht ausreichen, kann ich gerne jede Frage beantworten. Schonmal vielen vielen dank.
Ich versuche seit mehreren Tagen eine Datei per Webservice zu verschicken. Leider gibt er mir gegen Ende folgende Fehlermeldung:
Die Datei konnte nicht übermittelt werden.
Folgender Fehler´ist aufgetreten: ICSharpCode.SharpZipLib.SharpZipBaseException: Unexpected EOF
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.Fill()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeByte()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeShort()
bei ICSharpCode.SharpZipLib.Zip.Compression.Streams.In flaterInputBuffer.ReadLeInt()
bei ICSharpCode.SharpZipLib.Zip.ZipInputStream.GetNext Entry()
bei innosoft.inno5.isupdater.Zip.UnZip(Byte[] DateiAlsByte, String ZielOrdner, String Passwort, Boolean Ueberschreiben) in D:\inno5.1\Projekte\Win\Standard\ISUpdater\trunk\s rc\Client\Zip.cs:Zeile 70.
bei innosoft.inno5.isupdater.gui.FormMain.btnDownLoad_ Click(Object sender, EventArgs e) in D:\inno5.1\Projekte\Win\Standard\ISUpdater\trunk\s rc\Client\FormMain.cs:Zeile 86.
Ich erstelle ein .zip Datei, die ich sofort in ein byte[] konvertiere, diese dann über einen Webservice schicke und am anderen Ende wieder entpacke. Das meiste davon funktioniert. Leider fehlen meistens 2 Dateien. Die anderen kommen an und befinden sich auch im richtigen Verzeichnis. Ich kriege einfach nicht raus, warum er mir diesen Fehler gibt. Vielleicht könnt ihr mir ja weiterhelfen. Hier ist der Code, den ich zum Unzippen benutze:
Code:
public void UnZip(byte[] DateiAlsByte, string ZielOrdner, string Passwort, bool Ueberschreiben) { if (!ZielOrdner.EndsWith("\\")) ZielOrdner = ZielOrdner + '\\'; ZipInputStream zipStream = new ZipInputStream(new MemoryStream(DateiAlsByte)); try { zipStream.Password = Passwort; ZipEntry ZipEintrag; byte[] Puffer = new byte[65536]; while ((ZipEintrag = zipStream.GetNextEntry()) != null) { if (ZipEintrag.IsDirectory) { if (!Directory.Exists(ZielOrdner + ZipEintrag.Name.TrimStart('/'))) Directory.CreateDirectory(ZielOrdner + ZipEintrag.Name.TrimStart('/')); while (zipStream.Read(Puffer, 0, Puffer.Length) > 0) { } } else { if (!File.Exists(ZielOrdner + ZipEintrag.Name.TrimStart('/')) || Ueberschreiben) { string VerzeichnisName = Path.GetDirectoryName(ZielOrdner + ZipEintrag.Name); if (!Directory.Exists(VerzeichnisName)) { Directory.CreateDirectory(VerzeichnisName); } DateiSpeichern(zipStream, ZielOrdner + ZipEintrag.Name, ZipEintrag.Size); } } } } finally { zipStream.Close(); } } private static void DateiSpeichern(Stream Stream, string FullName, long UncompressedSize) { if (!Stream.CanRead || Stream.Length <= 0) return; FileStream fs = null; try { byte[] buff = new byte[65536]; fs = new FileStream(FullName, FileMode.Create); int res; if (UncompressedSize > 0) { while ((res = Stream.Read(buff, 0, buff.Length)) > 0) fs.Write(buff, 0, res); } } finally { if (fs != null) fs.Close(); } }
Comment