После обновления платформы 1С:Предприятие системные администраторы часто сталкиваются с проблемой нестабильной работы веб-публикаций. Пользователи начинают жаловаться на внезапное закрытие программы с сообщением: «К сожалению, возникла непредвиденная ошибка или сеанс был завершен администратором». При этом при работе через RDP или в толстом клиенте в локальной сети проблем не наблюдается. Разберем детально, почему это происходит и как настроить сервер для стабильной работы.
Первым делом проанализируем состояние сопоставления обработчиков в IIS. При установке новой версии платформы создается новый каталог bin, содержащий актуальные библиотеки. Часто автоматическая перепубликация базы из конфигуратора не обновляет пути в настройках самого IIS, либо делает это некорректно. Рассмотрим, как проверить это вручную.
Откроем Диспетчер служб IIS, выберем нашу опубликованную базу и перейдем в раздел «Сопоставление обработчиков» (Handler Mappings). Нам необходимо убедиться, что расширение .1cws или .1crs ссылается на библиотеку wsisapi.dll из каталога именно той версии платформы, которую мы только что установили. Если путь ведет в папку старого релиза, который, возможно, уже удален, это гарантированно приведет к падению рабочего процесса w3wp.exe.
Обратим внимание на права доступа. Выберем нужный обработчик, нажмем «Редактировать» и проверим «Ограничения запроса». На вкладке «Доступ» должно быть выбрано «Выполнение». Без этого флага библиотека не сможет корректно обрабатывать POST-запросы от тонкого клиента, что и вызывает ошибки типа /e1cib/logForm.
Выясним причину, связанную с внутренними механизмами управления сеансами 1С. В некоторых случаях вылет происходит строго через определенный промежуток времени (например, 15 минут). Это часто связано с тем, что веб-сервер считает сеанс «уснувшим» и принудительно его завершает.
Для исправления ситуации выполним следующие действия:
Если там установлено небольшое значение (например, 180 секунд или 3 минуты), веб-клиент может закрываться при кратковременных простоях. Рекомендуется установить значение не менее 86400 (24 часа), чтобы избежать преждевременного разрыва связи.
Проанализируем наиболее глубокую причину — автоматическую перезагрузку (Recycling) пула приложений. По умолчанию в IIS настроено значение «Regular Time Interval» (Постоянный временной интервал), равное 1740 минутам. Однако, при определенных нагрузках или утечках памяти, процесс может перезапускаться чаще. В момент перезапуска пула происходит обновление временных файлов ИБ (в папке 1Cv8Temp), что для активного сеанса 1С является критическим событием и приводит к выбросу пользователя из системы.
Рассмотрим по шагам, как настроить пул приложений для стабильной работы 1С:
0.Установка в 0 отключает периодическую перезагрузку по времени. Это предотвратит внезапные обрывы сессий. Если вы опасаетесь утечек памяти, лучше настроить «Конкретное время» (Specific Times) на глубокую ночь, когда в базе гарантированно никого нет.
Посмотрим на ситуацию со стороны системных ресурсов. Если вы установили 64-битную платформу, убедитесь, что пул приложений IIS настроен соответствующим образом. Проанализируем параметр «Разрешить 32-разрядные приложения» в дополнительных настройках пула. Если платформа 64-битная, этот параметр должен стоять в положении False. Несоответствие разрядности процесса IIS и загружаемой библиотеки wsisapi.dll — одна из самых частых причин мгновенного «падения» публикации.
Если вышеуказанные методы не помогли, необходимо настроить Технологический Журнал (ТЖ). Это позволит увидеть, на какой именно операции происходит прерывание. Создадим файл logcfg.xml в каталоге conf платформы. Пример минимального конфига для отслеживания ошибок:
<config xmlns="http://v8.1c.ru/7.4/config/logcfg">
<log location="C:\LOGS\1C" history="24">
<event>
<eq property="Name" value="EXCP"/>
</event>
<event>
<eq property="Name" value="PROC"/>
</event>
<property name="All"/>
</log>
</config>
Проанализируем собранные логи. Если мы видим события EXCP (Exception) с кодом 0xc0000005 в модуле wsisapi.dll, это свидетельствует об ошибке доступа к памяти. В таком случае стоит рассмотреть возможность перехода на использование Автономного сервера 1С (библиотека ibsrv.exe), который встроен в современные платформы и работает стабильнее, чем классический IIS в связке с файловой базой.
Разберем еще один важный момент: права пользователя, от имени которого работает IIS (обычно это IIS AppPool\ИмяПула). После обновления платформы система может потерять доступ к папке временных файлов. Проверим, что у этого пользователя есть права «Полный доступ» на следующие каталоги:
C:\Windows\TempC:\Program Files\1cv8\имя_версии\binИногда помогает очистка кэша самого сервера. Рассмотрим, как это сделать: нужно остановить службу IIS (команда iisreset /stop), удалить содержимое папок Temporary ASP.NET Files и папок кэша в профиле пользователя, под которым запускается служба, а затем снова запустить IIS.
Подводя итог, можно сказать, что в большинстве случаев проблема решается комбинацией трех факторов: актуализацией путей к dll, отключением рециклинга пула приложений и увеличением таймаутов спящих сеансов в настройках самой 1С.