fbpx

Проблема при публикации 1С на IIS потенциально опасный запрос (A potentially dangerous request)

Проблема при публикации 1С на IIS потенциально опасный запрос (A potentially dangerous request)

Проблема при публикации 1С на IIS потенциально опасный запрос (A potentially dangerous request)

Хотим поделиться с вами решением одной очень не очевидной проблемой при публикации баз 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}

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

Первое решение, это нужно изменить файл 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 Files\1cv8\8.3.21.1508\bin\wsisapi.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 Files\1cv8\8.3.21.1508\bin\wsisapi.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

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

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

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