Как отслеживать завершенную загрузку файла в ASP.NET

У меня этот веб-сайт ASP.NET, который позволяет пользователям загружать установочные пакеты программы (только обычные файлы). Я хочу отслеживать, когда загрузка завершена (т.е. Файл был полностью загружен на компьютер пользователя), а затем вызвать Google Analytics script, который сообщает о завершенной загрузке в качестве "цели" (очевидно, один из моих целью является увеличение загрузки файлов).

Проблема в том, что мне нужно поддерживать прямые URL-адреса файлов, в отличие от решения "страницы переадресации". Это связано с тем, что большой объем трафика поступает с сайтов загрузки программного обеспечения, которые явно запрашивают прямой URL-адрес файла при отправке продукта. Возможно, они проводят собственный анализ файлов (например, проверку вирусов). Но с этим набором ограничений типичный сценарий:

  • Пользователь посещает мой список продуктов на сайте загрузки программного обеспечения.
  • Пользователь нажимает кнопку "Загрузить" на этом сайте.
  • Страница "Загрузка" - это, как правило, перенаправление, которое, наконец, приводит пользователя к моему файлу через прямой URL-адрес, который я первоначально отправил, т.е. http://www.ko-sw.com/somefile.exe

Если в этих условиях точное решение для мониторинга невозможно, возможно, существует обходное решение? То, что приходит мне на ум, временно хранит количество выполненных загрузок на сервере, а затем обращается к административной странице, которая каким-то образом сообщает этот номер в Google Analytics и, наконец, возвращает его к нулю. С этим обходным решением, по крайней мере, нет необходимости пытаться присоединить обработчик javascript к ресурсу, отличному от HTML. Но даже тогда есть проблемы:

  • Как отслеживать завершение загрузки?
  • Как отслеживать возможности геолокации пользователей и браузера, чтобы сделать их более заметными в отчетах?

Спасибо всем заранее

Ответ 1

Лучшая альтернатива: пусть ваш установщик откроет веб-страницу после того, как пользователь установит веб-программное обеспечение. Пример: см. Установщик Keepass.

Вы можете отслеживать эту начальную скорость в GA и получать номера установок.

Ответ 2

Согласно awstats, прерванная загрузка имеет код состояния 206 http, поэтому, если вы анализируете журнал сервера для такого кода, вы можете получить те загрузки, которые были не завершено.

Ответ 3

@Керидо ~ Мне любопытно, что такое бизнес-пример. Вы пытаетесь отслеживать установки или загрузки? Если вы устанавливаете, перейдите к решению @SamMeiers.

Однако, если вы пытаетесь отслеживать загрузки, то следующий вопрос: какую базу веб-серверов вы используете? IIS? Apache? Что-то еще?

В IIS, если вы используете 7 (или более поздней версии), вы могли бы (легко?) написать HttpHandler, который проверяет последние байты файла, который будет отправлен, и на этом записывать журнал где-нибудь.

В Apache просто настройте протоколирование, чтобы рассказать вам, сколько байтов было передано (тривиальное изменение в httpd.conf), а затем каждый раз анализировать журналы (awstats [среди других] неплохо для этого, но вам, возможно, придется писать sed/awk script) и узнать, сколько полных переводов было завершено. Просто зависит от того, насколько тщательно вы пытаетесь быть.

Но я возвращаюсь к тому, что это за бизнес? Какое это имеет значение, если были незавершенные загрузки?

Ответ 4

Эта ссылка может вам помочь:

http://www.devx.com/dotnet/Article/22533/1954

Я использовал его как ссылку ранее для некоторых своих работ.

Ответ 5

Можно отслеживать ссылки как цель, которая может вам пригодиться. Однако это не будет отслеживать, когда загрузка будет завершена. http://www.google.com/support/analytics/bin/answer.py?answer=55529

Надеюсь, это поможет. ура Tigger

Ответ 6

Я думаю, что решение @SamMeiers очень хорошее, но вы можете оптимизировать его, вызвав веб-службы после завершения установки, но вы можете найти небольшую проблему, если использовать установку приложения в среде без Интернета, но вы можете заставить проверить если есть интернет или нет. Вы можете создать любой триггер, когда вы начнете установку как флаг запуска, а затем, если завершить проверку, если флаг начала существует, приложение также было загружено и установлено.