Schreiben in ZipArchive mit dem HttpContext OutputStream
Ich habe versucht, das "neue" ZipArchive in .NET 4.5 zu bekommen (System.IO.Compression.ZipArchive
), um in einer ASP.NET-Site zu arbeiten. Aber anscheinend mag es nicht, in den Stream von zu schreibenHttpContext.Response.OutputStream
.
Mein folgendes Codebeispiel wird werfen
System.NotSupportedException: Die angegebene Methode wird nicht unterstützt
sobald ein schreibversuch im stream unternommen wird.
DasCanWrite
Eigenschaft im Stream gibt true zurück.
Wenn ich den OutputStream mit einem Dateistream tausche, der auf ein lokales Verzeichnis verweist, funktioniert er. Was gibt?
ZipArchive archive = new ZipArchive(HttpContext.Response.OutputStream, ZipArchiveMode.Create, false);
ZipArchiveEntry entry = archive.CreateEntry("filename");
using (StreamWriter writer = new StreamWriter(entry.Open()))
{
writer.WriteLine("Information about this package.");
writer.WriteLine("========================");
}
Stacktrace:
[NotSupportedException: Specified method is not supported.]
System.Web.HttpResponseStream.get_Position() +29
System.IO.Compression.ZipArchiveEntry.WriteLocalFileHeader(Boolean isEmptyFile) +389
System.IO.Compression.DirectToArchiveWriterStream.Write(Byte[] buffer, Int32 offset, Int32 count) +94
System.IO.Compression.WrappedStream.Write(Byte[] buffer, Int32 offset, Int32 count) +41