Публикация базы данных «1С:Предприятие» на веб-сервере — стандартная задача при организации удаленной работы пользователей через веб-браузер или тонкий клиент. Однако в процессе настройки веб-сервера Internet Information Services (IIS) в среде Windows Server администраторы часто сталкиваются с неприятной ситуацией: при попытке открыть опубликованный ресурс в браузере возвращается лаконичная, но малоинформативная ошибка HTTP 500 — Внутренняя ошибка сервера (Internal Server Error).
Давайте подробно разберем, почему возникает эта ошибка, проанализируем основные причины сбоя и пошагово настроим систему так, чтобы публикация заработала стабильно.
Это одна из самых частых причин возникновения ошибки 500. Она связана с несовместимостью разрядности (битностей) рабочего процесса веб-сервера IIS и загружаемой динамической библиотеки расширения веб-сервера 1С (файла wsisapi.dll).
Проанализируем ситуацию. Платформа «1С:Предприятие» может быть установлена как в 32-разрядной (x86) версии, так и в 64-разрядной (x64) версии. Соответственно, при публикации базы данных регистрируется библиотека wsisapi.dll соответствующей разрядности. Если в настройках пула приложений IIS принудительно включена или отключена поддержка 32-разрядных приложений, возникает конфликт:
wsisapi.dll. Если для пула приложений параметр «Разрешены 32-разрядные приложения» установлен в значение True, рабочий процесс IIS запустится в 32-битном режиме. Попытка загрузить 64-битную DLL в 32-битный процесс мгновенно завершится крахом с кодом ошибки 0x800700c1 (ошибка 500.0).Выясним точную разрядность установленной у вас платформы 1С и настроим пул приложений соответствующим образом. Для этого выполним следующие шаги:
DefaultAppPool или пул с именем вашего сайта).Когда пользователь обращается к веб-публикации, веб-сервер IIS выполняет код от имени специальной системной учетной записи. Обычно это встроенный пользователь пула приложений IIS_IUSRS или учетная запись IUSR.
Для успешной инициализации подключения веб-серверу необходимо прочитать файл конфигурации web.config в каталоге публикации, а также загрузить файлы платформы 1С (включая wsisapi.dll и другие сопутствующие библиотеки) из папки установки 1С. Если у учетной записи веб-сервера нет прав на чтение каталога платформы, сервер вернет ошибку 500.
Настроим необходимые права доступа к папкам по шагам:
C:\Program Files\1cv8\, а для 32-битной версии — C:\Program Files (x86)\1cv8\.1cv8 и откроем Свойства (Properties).IIS_IUSRS и нажмем Проверить имена (Check Names), затем ОК.IIS_IUSRS установим галочки напротив пунктов Чтение и выполнение (Read & Execute), Список содержимого папки (List folder contents) и Чтение (Read).C:\inetpub\wwwroot\1s\). В этой папке у группы IIS_IUSRS также должны быть права на чтение файлов, в первую очередь файла web.config.По умолчанию в операционных системах Windows Server из соображений безопасности заблокирован запуск любых сторонних библиотек расширений ISAPI, если они явно не разрешены в консоли управления IIS.
Проверим настройки безопасности веб-сервера:
wsisapi.dll. Например: C:\Program Files\1cv8\8.3.10.2650\bin\wsisapi.dll.wsisapi.dll, введем понятное описание (например, "1C Web Service") и обязательно установим флаг Разрешить выполнение пути расширения (Allow extension path to execute).В процессе публикации базы данных конфигуратор 1С автоматически создает в целевом каталоге конфигурационный файл web.config. Иногда из-за ошибок записи, некорректно выбранных опций или сбоев при повторной публикации файл может содержать неверные пути или параметры, что вызывает ошибку конфигурации веб-сервера (код 500.19).
Рассмотрим структуру корректного файла web.config для работы с платформой «1С:Предприятие»:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="1C-Web-Service"
path="*"
verb="*"
modules="IsapiModule"
scriptProcessor="C:\Program Files\1cv8\8.3.10.2650\bin\wsisapi.dll"
resourceType="Unspecified"
requireAccess="Script" />
</handlers>
</system.webServer>
</configuration>
Проанализируем ключевые элементы этого файла. В секции handlers регистрируется обработчик запросов. Обратите особое внимание на параметр scriptProcessor. В нем должен быть прописан абсолютно точный физический путь к файлу wsisapi.dll той версии платформы 1С, которая используется для работы вашей информационной базы. Любая опечатка, лишний пробел или ссылка на несуществующую/удаленную версию платформы приведут к моментальному падению веб-сервера с ошибкой 500.
Динамическая библиотека wsisapi.dll скомпилирована с использованием среды разработки C++ и требует для своей работы наличия на сервере соответствующих библиотек времени выполнения (Runtime). На свежеустановленных операционных системах Windows Server данные компоненты по умолчанию могут отсутствовать.
Выясним, установлены ли необходимые пакеты распространяемого компонента Visual C++ (Redistributable). Для стабильной работы платформы 1С версий 8.3.10 и выше рекомендуется скачать с официального сайта Microsoft и установить пакеты следующих версий:
После установки распространяемых пакетов обязательно перезапустите службу веб-сервера IIS с помощью команды iisreset в командной строке, запущенной от имени администратора.
По умолчанию в целях безопасности веб-сервер IIS маскирует детальные технические сведения об ошибках, отдавая внешним клиентам стандартную страницу с текстом «500 - Внутренняя ошибка сервера». Чтобы перестать действовать «вслепую» и узнать конкретную причину падения (например, нехватка прав, неверный формат исполняемого файла или синтаксическая ошибка в конфигурации), настроим вывод подробных отчетов об ошибках.
Выполним детальную настройку диагностического режима:
1s).После включения этой настройки повторите попытку обращения к публикации непосредственно из браузера на самом сервере. Теперь вместо стандартного сообщения система отобразит подробную страницу диагностики, где будут указаны:
IsapiModule);Кроме того, обязательно загляните в системный журнал Windows. Откройте средство просмотра событий командой eventvwr.msc, перейдите по пути Журналы Windows (Windows Logs) -> Приложение (Application) и отфильтруйте события по источникам IIS-W3SVC-WP или WAS. Там вы гарантированно обнаружите подробное техническое описание сбоя пула приложений.