Ние разработваме приложение, което качва големи файлове през интернет. Размерът на файла преди компресиране с DotNetZip е около 18 GB и около 4 GB след компресиране. Файлът се прехвърля от клиентска машина към целева сървърна машина чрез защитен ftp без проблем.
След това клиентът извиква .Net уеб услуги, хоствани от машината на целевия сървър, за да копира файл от корена на ftp в директорията за съхранение, като изчислява хеша на файла и извиква DotNetZip за разархивиране на файла.
Уеб услугите работят добре, когато клиентската машина и целевият сървър, които хостват уеб услугите, са в интранет.
Въпреки това, когато се използва същата клиентска машина, но друга производствена целева сървърна машина, която хоства уеб услуги в Интернет, уеб услугите имат „Изключение за прекратяване на нишката“ при копиране, хеширане и разархивиране на 4GB файл.
И двете сървърни машини са Windows 2003 сървър с SP2, имат инсталирани едни и същи компоненти, имат един и същ IIS ver6.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 версия 6, уеб сайт -> раздел услуга ->Режим на изолация, е отметнато „Изпълнение на WWW услуга в режим на изолация на IIS 5.0“.
Текущото ни разбиране за проблема на сървърната машина в Интернет е, че работният процес на .Net recycl при стойност на изчакване по подразбиране причинява изключение „Нишката се прекратява“, дори ако нишката продължава да завършва копирането на файла.
Ако нашето разбиране е правилно, тогава защо същата конфигурация за изчакване работи на сървърната машина в интранет? Как да накараме конфигурацията за изчакване да работи на нашата производствена сървърна машина в Интернет?