мы заметили довольно странное поведение в одном из наших веб-приложений. При отладке на рабочей станции локального разработчика все обрабатывается нормально (с использованием Cassini Development Webserver). При публикации на удаленном веб-сервере с использованием IIS 6.0 обработка выполняется нормально около 4 или 5 минут, а затем внезапно умирает.
Я объясню позже, что означает "внезапно умирает", сначала я хотел бы дать отрывок ошибочного кода.
// loads data from SAP Webservice and serializes it into database
LoadXMLDataFromSAP();
// loop each item of a certain structure and parse data
foreach (var xItem in xSapData)
{
// method determining a status, about 30 LOC, fast execution
GetStatusCodeForContract(xItem);
...
// methods to parse data blocks, about 400 LOC, slow execution (database etc.)
TimeconsumingParserMethod1(xItem);
TimeconsumingParserMethod2(xItem);
}
Этот код работает нормально при отладке, выполнение занимает около 13 минут (это нормально, потому что это происходит только при синхронизации всех данных с SAP). При запуске одного и того же кода для одного и того же источника данных SAP в IIS 6.0 выполнение останавливается через 4 или 5 минут.
Сначала программа генерирует исключение System.NullReferenceException по вызову «TimeconsumingParserMethod1 ()», в следующем цикле мы получаем исключение System.NullReferenceException по «GetStatusCodeForContract ()». Поскольку мы используем один и тот же параметр в обоих вызовах, я думаю, что исключение NullReferenceException выбрасывается, поскольку член "xItem" имеет значение null.
Конфигурация сервера:
8 Core Intel machine
4 GB of RAM
RequestTimeout = 900 (15 minutes)
Memory usage = unlimited
Кто-нибудь знает о таком поведении в IIS 6 или аналогичных средах производственных серверов?