Проблема при публикации 1С на IIS - VIPASOFT

Хотим поделиться с вами решением одной очень не очевидной проблемой при публикации баз 1С на веб сервисе IIS, но которая доставит достаточно хлопот.

При открытии опубликованной базы в браузере либо в тонком клиенте при переходе на любую ссылку к примеру «отчеты» или «документы продажи» вываливается окно: «К сожалению, возникала непредвиденная ошибка»…

Ошибка при публикации 1С на IIS
Если развернуть подробней то увидим примерно следующий текст:

{Server Error in '/test_optica_retail' Application.
             A potentially dangerous Request.Path value was detected from the client (:).
             Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
             Exception Details: System.Web.HttpException: A potentially dangerous Request.Path value was detected from the client (:).Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
               Stack Trace:
[HttpException (0x80004005): A potentially dangerous Request.Path value was detected from the client (:).]
   System.Web.HttpRequest.ValidateInputIfRequiredByConfig() +678
   System.Web.PipelineStepManager.ValidateHelper(HttpContext context) +52
               Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.7.3930.0}

Подробная ошибка A potentially dangerous Request.Path

Существует несколько решений данной проблемы:

Первое решение, это нужно изменить файл web.config

Содержимое которого выглядит примерно вот так:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <add name="1C Web-service Extension" path="*" verb="*"
                 modules="IsapiModule"
                 scriptProcessor="C:Program Files1cv88.3.21.1508inwsisapi.dll"
                 resourceType="Unspecified" requireAccess="None" />
        </handlers>
    </system.webServer>
</configuration>
Необходимо добавить следующий текст
<security>
    <requestFiltering allowDoubleEscaping="true" />
</security>

.............

<system.web>
    <pages validateRequest="false" />
    <httpRuntime requestPathInvalidCharacters="" />
</system.web>
После добавления данных строк файл будет выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
   <system.webServer>
       <handlers>
           <add name="1C Web-service Extension" path="*" verb="*"
                modules="IsapiModule"
                scriptProcessor="C:Program Files1cv88.3.21.1508inwsisapi.dll"
                resourceType="Unspecified" requireAccess="None" />
       </handlers>

       <security>
           <requestFiltering allowDoubleEscaping="true" />
       </security>

   </system.webServer>

   <system.web>
       <pages validateRequest="false" />
       <httpRuntime requestPathInvalidCharacters="" />
   </system.web>

</configuration>

*Минус данного варианта это то что при следующий публикации базы данных вы получите ту же ошибку.

Второе решение более правильное. Необходимо зайти в IIS найти наш сайт и указать Classic .NET AppPool в пуле приложений вместо DefaultAppPool и перезапустить IIS

IIS — смена Application Pool

И наконец третий вариант, изменить в Пулах приложений (DefaultAppPool) «Режим управляемого конвейера» (Managed pipeline mode) с встроенного (Integrated) на классический (Clasic)

IIS — Pipeline Mode

Независимо от выбранного вами способы после всех манипуляций перезапускаем IIS

И в итоге получаем такую красоту

Успешная публикация 1С на IIS