Запись в ZipArchive с использованием HttpContext OutputStream

пытался получить "новый» 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("========================");
}

Трассировки стека:

[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

Ответы на вопрос(5)

Ваш ответ на вопрос