Я пытаюсь получить "новый" ZipArchive, включенный в .NET 4.5 (System.IO.Compression.ZipArchive
), для работы на сайте ASP.NET. Но, похоже, ему не нравится писать в поток HttpContext.Response.OutputStream
.
Мой следующий пример кода бросит
System.NotSupportedException: указанный метод не поддерживается
как только будет предпринята попытка записи в потоке.
Свойство CanWrite
в потоке возвращает true.
Если я обменяю OutputStream с файловым потоком, указывая на локальный каталог, он работает. Что дает?
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