Ситуация, когда после аварийного завершения работы сервера или сбоя питания веб-клиент 1С продолжает функционировать, а веб-сервисы начинают выдавать «Ошибку 500: внутренняя ошибка сервера», встречается довольно часто. Проблема осложняется тем, что стандартное сообщение IIS не дает конкретики, а простая перепубликация из Конфигуратора не всегда помогает. В этой статье мы подробно разберем, как восстановить работу веб-сервисов, проанализируем возможные причины сбоя и рассмотрим пошаговые методы решения проблемы.
Чаще всего при падении сервера происходит повреждение метаданных в конфигурационных файлах IIS или «зависание» сопоставлений обработчиков (Handler Mappings). Даже если вы нажимаете кнопку «Опубликовать» в 1С, конфигуратор может не обновить уже существующие, но некорректно работающие записи в IIS. Давайте выполним процедуру полной очистки системы.
Рассмотрим алгоритм действий по шагам:
1C Web-service Extension и указывают на wsisapi.dll).Проанализируем файл default.vrd. После перепубликации обязательно проверьте параметр alias. Бывают случаи, когда обращение идет по адресу site/ws/MyService?wsdl, а в конфигурации прописан другой псевдоним. Пример корректной секции в файле:
<point name="MyService"
alias="ws1.1cws"
enable="true"/>
Если ошибка 500 сохраняется, нам нужно выяснить, кто именно ее генерирует: сам IIS или платформа 1С. По умолчанию IIS скрывает детализацию в целях безопасности. Давайте включим подробный вывод.
Выполним настройку:
В Диспетчере служб IIS выберем наше приложение и откроем пункт «Страницы ошибок». В правой панели нажмем «Изменить параметры групповых ошибок» и выберем вариант «Подробные сообщения об ошибках». После этого при попытке открыть страницу .../ws/?wsdl в браузере мы увидим более конкретный текст, например, указание на конкретный модуль или проблему с правами доступа.
Проанализируем системную ситуацию: если после сбоя вы решили обновить платформу или восстановить ее из бэкапа, могла возникнуть путаница между 32-битной и 64-битной версиями. Если пул приложений IIS настроен на 64 бита, а публикация указывает на wsisapi.dll из папки Program Files (x86), веб-сервис работать не будет.
Часто причиной ошибки 500 после «падения» системы становится сброс прав доступа на папки или изменение паролей служебных учетных записей. Выясним, есть ли у IIS доступ к исполняемым файлам 1С.
Проверим следующие моменты:
IIS AppPool\DefaultAppPool или NetworkService), должен иметь права «Чтение и выполнение» на папку bin установленной платформы 1С.IUSR или «Удостоверение пула приложений».При переустановке ролей сервера или критических сбоях расширение 1С может попасть в список запрещенных. Проанализируем настройки на уровне всего сервера IIS:
wsisapi.dll присутствует в списке и имеет статус «Разрешено». Если записи нет, ее нужно добавить вручную, указав путь к библиотеке в папке bin нужной версии 1С.Аварийное завершение работы часто оставляет «битые» временные файлы. Рассмотрим процедуру очистки кэша на стороне сервера:
Остановим службу 1С:Предприятия и IIS. Перейдем в каталог данных сервера (обычно это C:\Program Files\1cv8\srvinfo). Найдем папку соответствующей информационной базы и внутри нее очистим содержимое папки snccntx. Также рекомендуется очистить системные временные папки C:\Windows\Temp и %TEMP% пользователя, под которым запускаются службы.
При повторных публикациях 1С иногда создает файл web.config в папке с default.vrd. Если в системе уже настроены параметры на уровне сайта, может возникнуть дублирование секций конфигурации. Проанализируем структуру web.config. Если там дублируются секции handlers, которые уже прописаны глобально, это приведет к внутренней ошибке сервера.
Пример корректного минимального файла конфигурации для 1С:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="1C Web-service Extension"
path="*"
verb="*"
modules="IsapiModule"
scriptProcessor="C:\Program Files\1cv8\8.3.X.XXXX\bin\wsisapi.dll"
resourceType="Unspecified"
requireAccess="Execute" />
</handlers>
</system.webServer>
</configuration>
Подводя итог, отметим: если после падения сервера 1С перестал работать веб-сервис, а веб-клиент при этом доступен, проблема почти всегда кроется в сопоставлении обработчиков ISAPI или в правах доступа к библиотекам платформы. Последовательное выполнение предложенных методов позволяет восстановить работоспособность системы без полной переустановки IIS.