powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с OpenXML
8 сообщений из 8, страница 1 из 1
Помогите с OpenXML
    #38332470
Ситуация следующая. Вооружившись статьей на хабре ( http://habrahabr.ru/post/109820/ ), сделал все как там написано.

Подготовил шаблон документа Word. Загрузил в Open XML SDK 2.0 Productivity Tool, сделал Reflect Code, перенес класс в студию.

Код на странице для отдачи ссылки на файл:
Код: c#
1.
2.
3.
4.
5.
6.
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=Test.docx");
Response.BinaryWrite(new GeneratedCodeTest.GeneratedClass().CreatePackageAsBytes());
Response.Flush();
Response.End();



GeneratedCodeTest.GeneratedClass().CreatePackageAsBytes() - вот здесь создается пакет DOCX.

Все замечательно работает если класс небольшого размера (пробовал 100-200 кб). Как только я начинаю использовать требуемый шаблон (он получился размером 4.9Мб) - происходит зависание. W3P жрет 13-14% процессорного времени и файл не скачивается. В браузере крутится ожидание. Пробовал на разных браузерах и серверах.

Причем что интересно, если проект запускать из студии - все замечательно работает, а как только перехожу на IIS - никак.
Понимаю что дело с размером класса, но как бороться? может есть какие настройки в web.config или в IIS?
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38332544
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Сидоров,

... сначала вот здесь посмотрите
https://issuetrak.com/knowledge_base?id=1696

ну или погуглите на предмет iis download file size limit

... но по опыту, когда я писал почтового веб-клиента, то загрузка аттачментов в броузере пошла гораздо легче, когда я посылал файл кусками в Response.BinaryWrite, в моем случае я читал в цикле из стрима построчно, конвертил в байты и посылал в браузер ...
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38332579
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй в респонз отдавать переменную с байтами.
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38332586
carrotik, динамически созданный и загружаемый файл размером всего 40Кб, а вот класс который его генерит 5Мб.
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38332593
МСУ,

Делал еще вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
const int buffersize = 1024 * 16;
		byte[] buffer = new byte[buffersize];
		int count = stream.Read(buffer, 0, buffersize);
		while (count > 0) {
			context.Response.OutputStream.Write(buffer, 0, count);
			count = stream.Read(buffer, 0, buffersize);
		}



Результат тот-же. Проблемы видимо не в отдаче байтов, а именно в генерации тяжелым классом. Можно конечно в коде делать шаблон, но это очень муторно.
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38332887
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Сидоров,

... может быть, есть смысл разделить процедуры генерации байтового массива и выдачи его в браузер ... например, сначала создать MemoryStream, записать в него байты, а потом скопировать этот стрим в OutputStream примерно вот так:

Код: vbnet
1.
2.
3.
4.
5.
memStream.Position = 0
Response.AddHeader("Content-Length", memStream.Length.ToString())
memStream.CopyTo(Response.OutputStream)
Response.OutputStream.Flush()
Response.End()
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38333827
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Сидоров,

для выгрузки данных в web.config стоит ограничение на размер 4мб. если тебе нужно больше - надо переопределить это число
...
Рейтинг: 0 / 0
Помогите с OpenXML
    #38336621
Всем спасибо за мысли. Победил только оптимизацией класса по генерации страницы. Он был монстроидальным после ReflectCode.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Помогите с OpenXML
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]