powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Браузер отправляет несколько запросов на загрузку файла
11 сообщений из 11, страница 1 из 1
Браузер отправляет несколько запросов на загрузку файла
    #38193750
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C#, MVC 2.0

Javascript'ом (window.open) на странице открываю новую вкладку по которой обработчик на сервере формирует word'овский файл.
Все работает, но когда я внутри обработчика реализовал аудит, оказалось, что часто обработчик вызывается 2 (а иногда и 3) раза при одном открытии вкладки.

Т.е., насколько я вник в суть процесса: браузер (в основном ie, но, возможно, пользователи используют и другие) при открытии вкладки загружает файл (в память, наверное) и выдает пользователю вопрос - загрузить файл или открыть, и в дальнейшем, при выборе пользователем одного из вариантов, возможно повторно отправляет запрос на загрузку файла. Почему изредка получается 3 обращения - тут я совсем не врублюсь.

Т.к. процесс формирования файла на сервере довольно ресурсоемкий, хотелось бы исключить повторные запросы. Как это можно сделать? Может нужно каким-то образом выставить нужные заголовки ответа?
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38193784
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

... гуголь рекомендует убрать из заголовков (Content-Disposition, "attachment"), если оно там присутствует, конечно ...
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38196864
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

Thx. Убрал. Двойные запросы практически исчезли.
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198281
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

Но появилась другая проблема: если загружаемый файл - текстовый, то браузер не предлагает сохранить его, а выводит в своем окне. А нужно именно предлагать сохранение на диск.
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198456
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

... а ContentType=application/octet-stream не помогает? .. вообще говоря, я выше совет дал именно из гугля, в моих проектиках "Content-Disposition", "attachment" не вызывает двойной загрузки ... почему так - не знаю ...
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198550
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

У меня выставлен ContentType=application/octet-stream, а также Content-Transfer-Encoding=binary.
Все равно, если двоичные данные, то выдает сохранение файла, если текстовые, то отображает как простой текст в окне браузера.

Кстати, как показало время, двойные запросы все равно присутствуют, хотя, вроде-бы, и в меньшем количестве.

Может проблема в чем-то другом? Браузер используется через клиента 2X, может тут какая-нибудь загвоздка.
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198569
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

.. а грузите файл через Response.WriteFile() или как ..?
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198701
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

В методе контроллера возвращаю переопределенный класс ActionResult в котором в методе ExecuteResult нем указываю все необходимые заголовки и записываю данные в ControllerContext.HttpContext.Response.OutputStream.
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38198990
publexus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кусок лога IIS:
Код: c#
1.
2.
3.
4.
date time 		sc-status 	sc-substatus 	sc-win32-status sc-bytes 	cs-bytes 	time-taken 

2013-03-25 07:32:20 	200 		0 		995 		163720 		704 		28765
2013-03-25 07:32:29 	200 		0 		0 		182377 		704 		6078


Видно, что первый запрос выдает почти все данные, но завершается с кодом 995 (The I/O operation has been aborted because of either a thread exit or an application request). Поток разрывает, видимо, браузер? Это можно исправить настройкой браузера? Клиентов несколько и находятся они на разных компах, зависимости одиночного или двойного запроса от клиента я пока не нашел.
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38199015
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
publexus,

... может, это к делу и не относится, но я так понял, у вас файл сначала создается, а потом отдается на загрузку? .. возможно, стоит попробовать поставить System.Thread.Sleep на пару-тройку секунд после создания файла, и только потом отдавать его в поток ... Мне как-то подобная мера помогла (хотя это считается некрасивым решением) ...
...
Рейтинг: 0 / 0
Браузер отправляет несколько запросов на загрузку файла
    #38199812
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Много где использую отдачу файлов серверным обработчиком, ради интереса попробовал потестить во всех современных браузерах, нигде не удалось воспроизвести вышеописанной проблемы, Content-Disposition:attachment присутствует. Подозрение либо сервером не те респонс хедеры отдаются, либо браузер какой-нить IE6,7.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Браузер отправляет несколько запросов на загрузку файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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