Ситуация, когда одна информационная база 1С успешно работает через веб-клиент, а другая при тех же условиях выдает Ошибка HTTP 500.0 — Internal Server Error, является довольно распространенной при администрировании серверов на базе Internet Information Services (IIS). Ошибка 500 — это общий ответ сервера о внутренней проблеме, который сам по себе не указывает на конкретную причину, но говорит о том, что сервер столкнулся с условием, которое он не может обработать.
В этой статье мы подробно разберем, как локализовать проблему, проанализируем настройки веб-сервера и конфигурации 1С, а также выясним, какие технические нюансы могут приводить к сбою конкретной публикации.
Первое, что необходимо сделать, — заставить IIS отдавать более детальную информацию вместо стандартной страницы с текстом "Internal Server Error". По умолчанию в целях безопасности подробности ошибок скрыты для удаленных пользователей.
Рассмотрим, как включить отображение ошибок:
После этого при повторном запуске веб-клиента сервер может выдать конкретный модуль или библиотеку, на которой происходит сбой, например, проблему с загрузкой wsap22.dll.
Проанализируем содержимое файла web.config, который находится в физической папке публикации вашей информационной базы. Часто ошибка 500 возникает из-за того, что путь к расширению веб-сервера 1С указывает на неверную версию платформы.
Разберем типичную ситуацию: на сервере установлено несколько версий 1С (например, 8.3.22.xxx и 8.3.23.xxx). Если база была опубликована из-под одной версии, а затем платформу обновили, в web.config может остаться старый путь. Проверьте строку обработчика:
<add name="1C Web-Extension" path="*" verb="*" modules="IsapiModule"
scriptProcessor="C:\Program Files\1cv8\8.3.23.1688\bin\wsap22.dll"
resourceType="Unspecified" requireAccess="Execute" />
Убедитесь, что файл wsap22.dll по указанному пути действительно существует и соответствует разрядности вашего пула приложений.
Выясним причину возможного конфликта разрядности. Если вы используете 64-битную платформу 1С, расширение веб-сервера также будет 64-битным. В этом случае пул приложений IIS должен быть настроен соответствующим образом.
Посмотрим на параметры пула:
Важно: Если установлена 64-битная 1С, это значение должно быть False. Если 32-битная — True. Несоответствие этого параметра и разрядности wsap22.dll мгновенно вызывает ошибку 500.
Как отмечалось в обсуждении, ошибка 500 может быть вызвана критической ошибкой в коде 1С, которая происходит в момент инициализации сеанса (например, в модуле управляемого приложения или в процедурах ПриНачалеРаботыСистемы).
Проанализируем ситуацию с ресурсами. Если в коде возник бесконечный цикл или рекурсия, веб-сервис может "повеситься", ожидая ответа. Поскольку веб-сервер часто работает в однопоточном режиме для конкретного сеанса, это блокирует выполнение запроса и приводит к тайм-ауту с кодом 500.
Рассмотрим пример кода, который может вызвать проблему при публикации:
// Опасный код в модуле управляемого приложения
Процедура ПриНачалеРаботыСистемы()
// Если здесь возникнет бесконечный цикл,
// веб-клиент выдаст ошибку 500 по таймауту
Пока Истина Цикл
// Какая-то логика без выхода
КонецЦикла;
КонецПроцедуры
Чтобы исключить этот фактор, попробуйте запустить эту же базу под тем же пользователем через тонкий клиент. Если база запускается, значит, проблема скорее в настройках IIS или специфике работы веб-клиента с метаданными.
Проанализируем права доступа. Веб-сервер IIS работает от имени определенной учетной записи (обычно IIS AppPool\ИмяПула). У этой учетной записи должны быть права на чтение и выполнение в папке, где лежат файлы default.vrd и web.config.
Кроме того, 1С активно использует временные папки Windows. Рассмотрим шаги по проверке прав:
C:\inetpub\wwwroot\ВашаБаза. Дайте права "Чтение" и "Изменение" для группы IIS_IUSRS.C:\Windows\Temp. Пользователь пула приложений должен иметь возможность записывать туда данные.snccntx (в каталоге описания кластера reg_1541) мешают корректной инициализации сеанса через веб.
Если вышеперечисленные методы не помогли, воспользуемся мощным инструментом диагностики — Failed Request Tracing. Это позволит нам увидеть, на каком именно этапе (ISAPI-фильтр, аутентификация, выполнение скрипта) происходит обрыв.
Выясним, как это настроить:
C:\inetpub\logs\FailedReqLogFiles) появится XML-файл.Подводя итог, можно сказать, что ошибка 500 в веб-клиенте 1С — это почти всегда либо конфликт разрядности/версий библиотек в web.config, либо нехватка прав доступа к файловой системе сервера. Реже это связано с критическим сбоем внутри самой конфигурации 1С при инициализации веб-сеанса.