При настройке веб-доступа к информационным базам 1С:Предприятие системные администраторы часто сталкиваются с ситуацией, когда публикация проходит успешно, но при попытке открыть базу в браузере возникает ошибка сервера. Одной из самых распространенных и при этом неочевидных проблем является ошибка с кодом 0x800700c1.
В этой статье мы подробно разберем, почему возникает данная ошибка на серверах под управлением Windows (IIS), проанализируем конфликт разрядностей приложений и рассмотрим пошаговое решение проблемы. Также затронем важные нюансы настройки прав доступа, которые могут влиять на стабильность работы веб-клиента (например, при интеграции с мобильными устройствами).
Обычно ситуация выглядит следующим образом: мы установили 64-битную платформу 1С:Предприятие, настроили роль веб-сервера IIS (Internet Information Services), опубликовали информационную базу через Конфигуратор или утилиту администрирования. Однако при входе на страницу публикации мы видим следующее сообщение:
Ошибка HTTP 500.0 - Internal Server Error
Невозможно отобразить эту страницу ввиду того, что произошла внутренняя ошибка сервера.
Код ошибки: 0x800700c1
Также в подробностях ошибки может быть указан модуль IsapiModule и обработчик 1C Web-service Extension.
Давайте разберемся в технической сути этого сбоя. Код 0x800700c1 в операционной системе Windows расшифровывается как «%1 не является приложением Win32». В контексте веб-сервера это означает конфликт архитектуры процесса и загружаемой библиотеки.
Рабочий процесс IIS (w3wp.exe) пытается загрузить библиотеку расширения веб-сервера 1С (wsisapi.dll). Если процесс запущен в 32-битном режиме, он физически не может загрузить 64-битную DLL, и наоборот. Чаще всего проблема возникает, когда мы пытаемся запустить 64-битный компонент 1С в пуле приложений, настроенном на совместимость с 32-битными приложениями.
Основное решение заключается в приведении настроек IIS в соответствие с разрядностью установленной платформы 1С. Поскольку в современных серверных решениях мы, как правило, используем 64-битную версию сервера 1С и платформы, давайте настроим IIS именно под нее.
Выполним следующие действия по шагам:
inetmgr или используя удобный публикатор 1С баз.Примечание: Если вы не создавали отдельный сайт, а публиковали в «Default Web Site», то, скорее всего, используется DefaultAppPool.
Почему это важно? Когда этот параметр установлен в True, Windows запускает рабочий процесс IIS в режиме совместимости (WOW64). Такой процесс ожидает 32-битные библиотеки. Устанавливая значение в False, мы принудительно заставляем IIS запускать полноценный 64-битный процесс, который без проблем загрузит 64-битную библиотеку wsisapi.dll из каталога установленной платформы 1С.
После изменения настройки перезапустите пул приложений или весь веб-сервер IIS (команда iisreset в командной строке), чтобы изменения вступили в силу.
Если после настройки пула ошибка сохраняется или меняется на другую (например, 500.19 или 404), что часто случается при попытке быстро организовать HTTP-сервис (поможет настройка обмена данными через web-сервисы), давайте проверим файл конфигурации веб-приложения.
Перейдем в папку, в которую мы опубликовали базу (путь к ней мы указывали при публикации из 1С). Найдем там файл web.config и откроем его любым текстовым редактором (например, Блокнотом).
Внутри файла нас интересует секция handlers. Убедимся, что путь к библиотеке указан верно и соответствует той версии платформы, которую мы хотим использовать. Пример корректной записи для 64-битной версии:
Обратите внимание на путь в атрибуте scriptProcessor. Если там указан путь к Program Files (x86), значит, при публикации использовалась 32-битная версия клиента 1С. В таком случае необходимо либо переопубликовать базу из 64-битного клиента, либо вручную исправить путь на Program Files (без x86), убедившись, что по этому пути действительно лежит файл wsisapi.dll.
Еще одной частой причиной ошибок 500-й серии являются недостаточные права доступа — для диагностики подойдёт инструмент сбора и анализа HTTP-запросов. Рабочий процесс IIS работает от имени специального пользователя (обычно IUSR или группа IIS_IUSRS). Этому пользователю необходим доступ к файлам платформы 1С.
Давайте проверим права:
C:\Program Files\1cv8\.Если этих прав нет, веб-сервер просто не сможет «дотянуться» до библиотеки расширения, даже если разрядность настроена верно (в некоторых случаях может также потребоваться настройка прокси-сервера для работы внутренних служб).
Рассмотрим ситуацию, когда по каким-то причинам нам необходимо использовать именно 32-битные компоненты веб-расширения на 64-битной ОС (например, если используется старое торговое оборудование, драйверы которого существуют только в 32-битном виде и должны взаимодействовать с веб-сервисом).
В этом случае мы должны действовать от обратного:
web.config ведет в C:\Program Files (x86)\....Однако, для высоконагруженных систем мы рекомендуем использовать чистую 64-битную архитектуру, так как это снимает ограничение на использование оперативной памяти рабочим процессом (в 32-битной среде процесс ограничен 2-4 ГБ памяти).
В завершение, проверим, установлены ли все необходимые компоненты самого Windows Server. Для корректной работы 1С через веб требуются следующие компоненты роли Web Server (IIS):
Если какой-то из этих компонентов отсутствует, его необходимо доустановить через «Диспетчер серверов» (Server Manager) -> «Добавить роли и компоненты».
Проанализировав все вышеописанные шаги, мы можем гарантировать стабильную работу веб-клиента 1С. Главное правило — соблюдать соответствие разрядности: 64-битная ОС + 64-битная 1С требуют отключения поддержки 32-битных приложений в пуле IIS.