.Net Тайм-аут веб-службы на компьютере с Интернет-сервером

Мы разрабатываем приложение, которое загружает большие файлы через Интернет. Размер файла до архивирования с помощью DotNetZip составляет около 18 ГБ, а после архивирования - около 4 ГБ. Файл передается с клиентской машины на конечный сервер по защищенному ftp без каких-либо проблем.

Затем клиент вызывает веб-службы .Net, размещенные на конечном сервере, для копирования файла из корня ftp в каталог хранилища, вычисления хэша файла и вызова DotNetZip для распаковки файла.

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

Однако при использовании той же клиентской машины, но другой производственной целевой серверной машины, на которой размещены веб-службы в Интернете, веб-службы имеют сообщение «Исключение прерывания потока» при копировании, хешировании и распаковке файла размером 4 ГБ.

Обе серверные машины представляют собой сервер Windows 2003 с пакетом обновления 2 (SP2), на них установлены одинаковые компоненты, одинаковая версия IIS 6.0 и одинаковая конфигурация для использования ASP .Net 2.0. Мы скопировали web.config, machine.config, MetaBase.xml с компьютера-сервера интрасети на компьютер-сервер Интернет.

Мы изменили: 1. Код на стороне клиента: тайм-аут прокси веб-службы в коде 7200000 2. Файл web.config серверной машины: (1). (2). 3. Файл машины-сервера machine.config: (1). 4. Серверная машина MetaBase.xml: (1). AspMaxRequestEntityAllowed = "1073741824" 5. В IIS ver6 на веб-сайте -> вкладка службы -> Режим изоляции установлен флажок «Запускать службу WWW в режиме изоляции IIS 5.0».

Наше текущее понимание проблемы на сервере в Интернете заключается в том, что рабочий процесс .Net recycl при значении тайм-аута по умолчанию вызывает исключение «Поток был прерван», даже если поток продолжает завершать копирование файла.

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


person Tina Guo    schedule 15.02.2012    source источник


Ответы (1)


Я потерялся. У вас 2 сервера. У одного есть веб-сервис, который распаковывает очень большой файл и копирует его на второй сервер.

Где-то по пути время истекает. Это примерно так?

Если это правда, я бы посмотрел на использование сети во время копирования файла. Я предполагаю, что передача файла между машинами занимает очень много времени.

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

person NotMe    schedule 15.02.2012
comment
Благодарю за ваш ответ. Позвольте мне уточнить конфигурацию. В нем задействовано 3 машины. - person Tina Guo; 16.02.2012
comment
Спасибо за ответ. У меня есть сервер A, на котором размещается веб-служба, сервер B хранит файлы. A и B находятся в одной сети в Интернете. После того, как я снял флажок Запускать WWW в режиме изоляции в IIS 5.0, используя пул приложений, у меня нет проблем с копированием, хешем, разархивированием файла размером 4 ГБ на сервере A. Но у меня все еще есть исключение для прерывания потока, если я копирую / хэширую / разархивирую файл из A в B. Почему моя конфигурация тайм-аута не работает при использовании сервера B? - person Tina Guo; 16.02.2012