Расширители Ajax и сетевые валидаторы не работают после миграции на Win Server 2019

#.net #asp.net-ajax

Вопрос:

Раньше я бегал .Чистый веб-сайт на Windows Server 2012 R2 я переместил веб-сайт на сервер 2019 года, и теперь все расширители Ajax и стандартные валидаторы перестали работать, но код по-прежнему работает без проблем. Я потратил много времени, пытаясь понять, почему. Веб — сайт нормально работает на локальном хосте внутри сервера, а также на моей локальной машине, я подозреваю, что может быть неправильная конфигурация либо в IIS, либо в web.config. Текущая версия библиотеки dll Ajax toolkit-3.0.2

Простой javascript работает, никаких ошибок при отладке страницы

 ?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <appSettings>
    <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  </appSettings>
  <system.webServer>
    <handlers>
    </handlers>
  </system.webServer>
  <system.web>
    <compilation targetFramework="4.5">
      <assemblies>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
      </assemblies>
    </compilation>
 

Вот пример, который работает на локальном хосте и моей локальной машине, но не через IIS

 form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="RequiredFieldValidator" Text="rdfghbdgh"></asp:RequiredFieldValidator>
        <br />
        <cc1:ConfirmButtonExtender ID="ConfirmButtonExtender1" runat="server" ConfirmText="hcnccjcj" TargetControlID="Button1"></cc1:ConfirmButtonExtender>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
    </div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
    </form>
 

Ответ №1:

После нескольких часов исследований эта проблема возникает из-за настройки в Plesk. В частности: большинство проверок JS зависят от ресурсов axd, которые блокируются системой ModSecurity в брандмауэре Plesk.

Чтобы решить эту проблему: вы должны установить фильтрацию ModSecuirty в положение «Обнаружение» или «Не включено«.

Надеюсь, это поможет другим.