2013-03-04 5 views
0

В нашем приложении Windows мы используем протокол загрузки BITS (с загрузкой), чтобы загружать файлы на наш сервер, обрабатывать их и ждать ответа. Иногда разработка сервера может быть очень длинной (> = 10 минут), и мы сталкиваемся с проблемой тайм-аута.BITS Время отправки отклика

Согласно документу http://download.microsoft.com/download/9/5/E/95EF66AF-9026-4BB0-A41D-A4F81802D92C/[MC-BUP].pdf

3.1.2.2 Загрузить Response Timeout Этот таймер ограничивает количество времени, необходимое для получения любого из ответов, указанных в разделе 2.2 из сервере независимо от государственных переходов. Значение по умолчанию составляет 5 минут; правовой диапазон - любое положительное значение.

Есть ли способ изменить значение по умолчанию 5 минут? Как я могу установить его с более высоким значением?

Спасибо.

+0

Таким образом, клиент откладывает время ожидания ответа сервера. Вы кодируете сервер или кодируете клиента? Если клиент, какой API (если есть), вы используете? –

+0

Я кодирую клиента, с нашим проприетарным языком. Я могу управлять только командой BITS с помощью командной строки BITSADMIN.exe (я знаю, что это ...) Я не могу использовать какой-либо API. Между тем я, вероятно, нашел два решения: - дескриптор стороны сервера таймаута - раздел реестра, чтобы установить, чтобы увеличить таймаут. Я тестирую их ... –

+0

Я не вижу, как сервер мог бы обработать его, если только он не мог отправить HTTP-заголовок клиенту, предлагая, как долго он должен ждать. Однако, как кажется из документа, таймер является частным делом клиента. Поэтому ключ реестра будет наиболее вероятным вариантом. Вы действительно хотите использовать BITS в качестве протокола запроса/ответа? Было бы разумнее, если бы сервер обратился к клиенту по завершении. Пять минут - довольно длительное время ожидания для клиента, чтобы удерживать сессию. –

ответ

0

Мы попытались изменить раздел реестра (например, TimeQuantaLenght), но это не решило проблему.

Чтобы решить, сначала мы увеличиваем request timeout сайтов.

Во-вторых, как сообщили в doc:

Серверное приложение должно предоставить ответ в течение пяти минут. Если серверное приложение не отвечает в течение пяти минут, задание переходит в состояние временной ошибки. Когда истечет время повторной попытки, сервер BITS отправит другое уведомление серверному приложению (серверное приложение должно быть записано для обработки дубликатов уведомлений ).

поэтому мы обрабатываем дубликат запроса! В случае Transient Error протокол BITS попытается перезапустить передачу по истечении времени, определенного для MinimunRetryDelay.

Мы справляемся с проблемой самостоятельно; мы идентифицируем каждую передачу с GUID, если переданный GUID вводит состояние переходной ошибки и перезапускаем, мы проверяем, произошла ли передача, и обработайте соответствующее действие.

0

Материал из Википедии, для рабочих мест загружаемых BITS requires IIS web server with BIT server extension:

BITS версии 1.0 поддерживает только загрузки. Начиная с версии 1.5, BITS поддерживает как загрузку, так и загрузку. Для загрузки требуется сервер IIS с расширением сервера BITS на принимающей стороне.

Я не знаю, как вы используете протокол BITS, но this page объясняет, как использовать инструмент commnad строки BITS администратора для создания загрузки или выгрузки заданий и следить за их прогрессом. Этот переключатель ниже может помочь вам:

/SetNoProgressTimeoutТайм-аут работы

Устанавливает продолжительность времени в секундах, что BITS пытается передать файл после возникновения первой нерегулярной ошибки ,

и this other page описывает свойства расширения BISS IIS. Я процитировал тот, который вам может понадобиться.

Фоновая интеллектуальная служба передачи (BITS) использует ISAPI для расширения IIS для поддержки загружаемых заданий. BITS использует эти свойства для определения , как загрузить файлы.

BITSSessionTimeout Тип данных: DWORD

Количество секунд соединение поддерживается, если никакого прогресса не будет сделано загрузки файла; таймер сбрасывается при достижении прогресса. BITS закрывает соединение, если тайм-аут достигнут и очищает данные , связанные с сеансом.

+0

Вы можете использовать интерфейс IIS для настройки виртуального каталога для загрузки BITS. Выберите «Свойства» в контекстном меню виртуального каталога. Нажмите вкладку «Расширение BITS», чтобы перейти на страницу свойств BITS (необходимо установить расширение сервера BITS ISAPI) http://msdn.microsoft.com/en-us/library/aa363164(v=vs.85).aspx –

Смежные вопросы