Публикация информационной базы 1С на веб-сервере IIS в среде Windows 10 часто сопровождается техническими сложностями, которые не всегда очевидны при использовании стандартного мастера публикации из Конфигуратора. Разберем основные сценарии, когда вместо запуска веб-клиента мы получаем либо список файлов в браузере (Directory Browsing), либо критическую ошибку Internal Server Error 500. Проанализируем причины такого поведения и пошагово настроим сервер для стабильной работы.
Если при обращении по адресу публикации вы видите содержимое каталога и файл default.vrd, это означает, что IIS воспринимает вашу папку как обычное файловое хранилище, а не как активное веб-приложение. Выясним причину: сервер не знает, как обрабатывать расширение .vrd, или не активированы необходимые компоненты среды выполнения.
Для решения этой проблемы выполним следующие действия:
wsapvr.dll.web.config в папке публикации. Если он отсутствует или поврежден, IIS не получит инструкций по передаче запроса модулю 1С. Попробуем переопубликовать базу из Конфигуратора от имени администратора.Эта ошибка является наиболее общей и часто указывает на конфликт разрядности или отсутствие прав доступа. Рассмотрим подробнее, как исправить ситуацию, когда 1С установлена в 64-битной версии.
Разберем настройку пула приложений:
DefaultAppPool).False. И наоборот, если платформа 32-битная — в True.Проанализируем права доступа к файловой системе. Это критически важный этап, так как веб-сервер работает от имени специальной учетной записи. Выполним настройку прав:
IIS_IUSRS на папку, где лежит файл web.config и default.vrd.ApplicationPoolIdentity) на папку с бинарными файлами 1С. Обычно это путь вида C:\Program Files\1cv8\8.3.X.X\bin. Если сервер не сможет прочитать wsapvr.dll, вы получите ошибку 500.Иногда после успешного запуска веб-клиента пользователи сталкиваются с ошибкой: Обнаружено потенциально опасное значение Request.Path, полученное от клиента (:). Это происходит при попытке передачи файлов или специфических навигационных команд, содержащих спецсимволы, которые система безопасности IIS блокирует по умолчанию.
Посмотрим на два способа решения этой проблемы:
Способ 1: Изменение режима управляемого конвейера.
В дополнительных параметрах пула приложений (DefaultAppPool) найдем пункт "Режим управляемого конвейера" (Managed Pipeline Mode). Переключение его из режима Integrated в режим Classic часто решает проблему совместимости со старыми механизмами передачи путей, однако это может несколько снизить общую производительность системы.
Способ 2: Настройка через конфигурационный файл.
Более современный и безопасный метод — внести изменения непосредственно в файл web.config, который находится в папке с вашей публикацией. Мы можем разрешить использование определенных символов в путях запросов. Рассмотрим пример того, как должен выглядеть блок настроек внутри секции <system.web>:
<system.web>
<httpRuntime requestPathInvalidCharacters="" />
</system.web>
Дополнительно, для обеспечения возможности загрузки файлов и корректной обработки "двойного экранирования", рекомендуется добавить следующий блок в секцию <system.webServer>:
<security>
<requestFiltering allowDoubleEscaping="true" />
</security>
Если причина ошибки 500 все еще не ясна, мы можем заставить IIS выводить подробную техническую информацию прямо в окно браузера, вместо стандартной заглушки. Рассмотрим, как это сделать:
После этого при обновлении страницы в браузере вы увидите точное указание на модуль или файл конфигурации, вызвавший сбой. Не забудьте вернуть эту настройку обратно после завершения отладки в целях безопасности.
При публикации из 64-разрядной версии 1С крайне важно убедиться, что файл default.vrd содержит правильный путь к модулю расширения. Проанализируем содержимое default.vrd. В нем должен быть указан путь к 64-битной библиотеке:
C:\Program Files\1cv8\8.3.X.X\bin\wsapvr.dll
Если там указан путь в папку Program Files (x86), а пул настроен на 64 бита — публикация не заработает. Всегда проверяйте соответствие настроек пула приложений IIS и фактической разрядности установленной платформы 1С.