Как исправить ошибку 0x800700c1 IsapiModule при запуске веб-сервера IIS для 1С:Предприятия?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

В этой статье мы подробно рассмотрим распространенную проблему, возникающую при публикации баз данных 1С:Предприятие на веб-сервере IIS – ошибку 0x800700c1 с модулем IsapiModule. Эта ошибка часто указывает на несоответствие в разрядности компонентов, но может иметь и другие причины. Мы разберем основные методы диагностики и решения, чтобы вы смогли успешно запустить ваш веб-сервер и обеспечить стабильную работу веб-приложений 1С.

Что означает ошибка 0x800700c1 IsapiModule?

Код ошибки 0x800700c1 расшифровывается как "Серьезная, Win32, Не является приложением Win32". Несмотря на формулировку, она чаще всего означает, что веб-сервер IIS пытается загрузить динамическую библиотеку (DLL) одной разрядности (например, 32-битную), в то время как пул приложений настроен для работы с другой разрядностью (например, 64-битной), или наоборот. То есть, DLL-файл имеет неверную разрядность по сравнению с настройками IIS.

В контексте 1С:Предприятие, это обычно связано с модулем wsap.dll, который является ISAPI-расширением, обеспечивающим взаимодействие 1С с веб-сервером. Если IIS ожидает 64-битную DLL, а получает 32-битную (или наоборот), возникнет ошибка 0x800700c1. Понимание этой основной причины поможет нам сфокусироваться на правильной настройке.

Основное решение: Настройка разрядности пула приложений IIS

Ключевым шагом в устранении ошибки 0x800700c1 является правильная настройка параметра "Разрешены 32-разрядные приложения" для соответствующего пула приложений в диспетчере служб IIS. Давайте разберем, как это сделать, в зависимости от разрядности вашей платформы 1С:Предприятие и веб-сервера.

  1. Определяем разрядность компонентов. Прежде чем вносить изменения, мы должны точно знать, какая версия платформы 1С:Предприятие (32-битная или 64-битная) используется для публикации информационной базы, а также какая разрядность у файла wsap.dll. Обычно, если вы используете 64-битную операционную систему и установили 64-битную версию платформы 1С, то и wsap.dll будет 64-битным. Важно, чтобы разрядность модуля IsapiModule (представленного файлом wsap.dll) соответствовала разрядности пула приложений, в котором работает веб-приложение.

  2. Открываем диспетчер служб IIS. Нажмите кнопку Пуск, выберите пункт Выполнить, введите inetmgr.exe, а затем нажмите ОК. Это откроет консоль управления службами IIS.

  3. Находим нужный пул приложений. В диспетчере IIS разверните узел вашего сервера (обычно это имя вашего компьютера), затем перейдите к разделу Пулы приложений. Найдите пул приложений, который использует ваш веб-сайт 1С. По умолчанию это часто DefaultAppPool, но может быть и другой, если вы создавали его специально для публикации 1С.

  4. Настраиваем параметр "Разрешены 32-разрядные приложения".

    После того как вы нашли нужный пул приложений, выделите его. В панели Действия (обычно находится справа) выберите Дополнительные параметры.... В открывшемся окне найдите параметр "Разрешены 32-разрядные приложения".

    • Если ваша платформа 1С:Предприятие и wsap.dll являются 32-битными: Установите значение этого параметра в True (Истина). Это позволит 64-битному IIS запускать 32-битные процессы в этом пуле приложений, что необходимо для корректной работы 32-битных ISAPI-модулей 1С.

    • Если ваша платформа 1С:Предприятие и wsap.dll являются 64-битными: Установите значение этого параметра в False (Ложь). Это обеспечит работу пула приложений исключительно в 64-битном режиме, соответствующем разрядности ваших 64-битных компонентов 1С. Включение поддержки 32-битных приложений для 64-битной 1С вызовет ошибку 0x800700c1, поскольку IIS будет пытаться загрузить 64-битную DLL в 32-битном процессе.

  5. Перезапустите пул приложений. После изменения параметра очень важно перезапустить соответствующий пул приложений, чтобы изменения вступили в силу. Для этого выделите пул приложений и в панели Действия выберите Остановить, а затем Запустить. Также рекомендуется перезапустить весь веб-сайт, к которому относится публикация 1С.

Работа со смешанными средами: 32-битные и 64-битные публикации 1С на одном IIS

Что делать, если вам необходимо одновременно публиковать 32-битную и 64-битную базы 1С на одном веб-сервере IIS? Стандартное решение с изменением одного пула приложений здесь не подойдет, так как один пул может быть настроен только на одну разрядность. В таких случаях мы используем более гибкий подход – создание отдельных пулов приложений для каждой разрядности.

  1. Создаем новый пул приложений для 32-битных публикаций. В диспетчере IIS, в узле Пулы приложений, нажмите Добавить пул приложений... (в панели Действия). Присвойте ему осмысленное имя, например, 1C_32bit_Pool или DefaultAppPool32. При создании вы можете указать версию платформы .NET, если требуется, но для ISAPI-модулей это не всегда критично. После создания нового пула, выделите его, перейдите в его Дополнительные параметры... и установите "Разрешены 32-разрядные приложения" в True. Это будет наш пул для всех 32-битных публикаций 1С.

  2. Настраиваем существующий или новый пул приложений для 64-битных публикаций. Если у вас уже есть пул приложений (например, DefaultAppPool), и вы планируете использовать его для 64-битных публикаций 1С, убедитесь, что в его Дополнительных параметрах... параметр "Разрешены 32-разрядные приложения" установлен в False. Если же вы хотите создать отдельный пул и для 64-битных публикаций, повторите шаг 1, но назовите его, например, 1C_64bit_Pool и установите "Разрешены 32-разрядные приложения" в False.

  3. Привязываем публикации 1С к соответствующим пулам. Для каждой публикации вашей информационной базы 1С:Предприятие в IIS необходимо указать, какой пул приложений она будет использовать:

    • Выберите веб-сайт или виртуальное приложение, соответствующее вашей публикации 1С.

    • В панели Действия выберите Основные параметры....

    • В открывшемся окне в поле Пул приложений выберите тот пул, который соответствует разрядности этой конкретной публикации (например, 1C_32bit_Pool для 32-битной публикации, и DefaultAppPool или 1C_64bit_Pool для 64-битной).

  4. Перезапустите все задействованные пулы приложений. Как и в случае с одним пулом, после всех изменений перезапустите как минимум те пулы приложений, которые вы изменили или назначили новым публикациям. Это гарантирует, что все настройки применятся корректно.

Дополнительные аспекты, которые следует проверить

Если основной способ с настройкой разрядности пула приложений не помог, или если ошибка изменилась на другую, мы рассмотрим дополнительные возможные причины ошибки 0x800700c1 и связанные с ней проблемы, которые могут помешать корректной работе 1С на IIS.

  1. Проверка прав доступа к файлам и папкам (Permissions).

    Ошибка 0x800700c1 (или последующие ошибки, например, связанные с доступом к c:\inetpub\...) часто вызвана недостаточными правами доступа. Мы должны убедиться, что у пользователей IUSR и IIS_IUSRS есть необходимые разрешения на чтение и выполнение для следующих папок:

    • Папка, содержащая опубликованные файлы 1С (включая wsap.dll).

    • Основная папка c:\inetpub и ее подпапки, если веб-сайт расположен там.

    • Каталоги установки платформы 1С, особенно bin, где находится wsap.dll.

    Мы рекомендуем предоставить этим группам пользователей полные права на папку публикации 1С и права на чтение/выполнение для папок, содержащих wsap.dll. Для проверки и настройки прав:

    1. Откройте проводник Windows и перейдите к нужной папке (например, к папке с публикацией 1С).

    2. Щелкните правой кнопкой мыши по папке и выберите Свойства.

    3. Перейдите на вкладку Безопасность.

    4. Нажмите кнопку Изменить..., а затем Добавить.... Введите IUSR и IIS_IUSRS, нажмите Проверить имена и ОК.

    5. Убедитесь, что для этих пользователей или групп установлены разрешения Чтение и выполнение, Список содержимого папки и Чтение. Для папки публикации 1С можно временно предоставить Полный доступ для диагностики, если другие методы не помогают.

  2. Сопоставления обработчиков (Handler Mappings).

    Неверное сопоставление сценариев также может приводить к ошибке 0x800700c1, если обработчик указывает на ISAPI DLL-файл, который не может обработать запрос. Мы проверим эти настройки:

    1. В диспетчере IIS выберите ваш веб-сайт или виртуальное приложение, соответствующее публикации 1С.

    2. Дважды щелкните на пункт Сопоставления обработчиков в разделе IIS.

    3. Убедитесь, что сопоставление сценария (например, для файлов с расширением .1sc или .dll, используемых 1С) указывает на правильный ISAPI DLL-файл (в нашем случае это wsap.dll из соответствующей директории платформы 1С). Например, путь должен быть похож на C:\Program Files\1cv8\8.3.21.1393\bin\wsap.dll для 64-битной версии или C:\Program Files (x86)\1cv8\8.3.21.1393\bin\wsap.dll для 32-битной.

    4. Мы проверяем, что нет конфликтующих или ошибочных сопоставлений, особенно если на сервере установлено другое программное обеспечение, которое также использует ISAPI (например, ColdFusion или другие веб-приложения). Удаление нерелевантных или дублирующихся сопоставлений может помочь.

  3. Конфликты с другими модулями IIS.

    В редких случаях, ошибка 0x800700c1 может быть вызвана конфликтами с другими модулями IIS, например, установленными сторонним ПО (таким как Windows Server Update Services - WSUS) или дополнительными компонентами. WSUS, к примеру, может устанавливать глобальные модули (например, DynamicCompressionModule, StaticCompressionModule), которые по умолчанию заблокированы и пытаются загрузиться во всех пулах приложений, независимо от их разрядности.

    Если вы подозреваете такой конфликт, мы можем изучить файл applicationHost.config (обычно находится в %windir%\System32\inetsrv\config) и проверить настройки глобальных модулей. Возможно, потребуется добавить атрибут preCondition="bitness64" для таких модулей, чтобы они загружались только в 64-битных пулах приложений, если это не влияет на работу других сервисов.

  4. Проблемы с файлами конфигурации applicationHost.config или web.config.

    Ошибка 0x800700c1 (часто сопровождающаяся ошибкой HTTP 500.19) может указывать на проблемы с синтаксисом или правами доступа к файлам конфигурации IIS. Это может быть связано с тем, что рабочий процесс не может прочитать файлы конфигурации, наличие неправильного XML в файлах, или некорректные разрешения NTFS для доступа к ним.

    Мы рекомендуем проверить журналы событий Windows (Откройте Просмотр событий, перейдите в Журналы Windows -> Система или Приложение) на наличие более подробных ошибок, связанных с IIS. Также убедимся, что учетная запись пула приложений имеет необходимые разрешения для чтения файла web.config в папке публикации 1С, а также для основного файла applicationHost.config.

  5. Перезагрузка сервера. Иногда, особенно после внесения значительных изменений в настройки IIS, установки обновлений или компонентов 1С, простая перезагрузка операционной системы может решить временные проблемы или правильно применить все внесенные изменения. Как показал опыт одного из участников обсуждения, ошибка может исчезнуть после перезагрузки, даже если не было явных шагов по устранению.

Заключение

Ошибка 0x800700c1 IsapiModule при работе с 1С и IIS чаще всего связана с фундаментальным несоответствием разрядности между модулем wsap.dll и настроенным пулом приложений IIS. Тщательная проверка и корректная настройка параметра "Разрешены 32-разрядные приложения" в пуле приложений IIS, в соответствии с разрядностью используемой платформы 1С, является основным и наиболее эффективным решением.

Мы также рассмотрели, как работать со смешанными средами, где требуются как 32-битные, так и 64-битные публикации, путем создания отдельных пулов приложений. Не забываем о важности проверки прав доступа, сопоставлений обработчиков и возможных конфликтов модулей. Применение этих шагов позволит вам успешно опубликовать и запустить веб-приложения 1С, обеспечивая их стабильную и эффективную работу на веб-сервере IIS.

← На главную