Ajax 扩展器和网络验证器在迁移到 Win Server 2019 后不工作

Ajax extenders & Net Validators are not working after migration to Win Server 2019

我曾经在 Windows 服务器 2012 R2 上使用 运行 .Net 网站,我将网站移至 2019 服务器,现在所有 Ajax 扩展器和标准验证器都停止工作但仍然代码 运行s 没有问题。我花了很长时间试图找出原因。该网站在服务器内部的本地主机以及我的本地计算机上正常工作,我怀疑 IIS 或 web.config 中可能存在配置错误。当前 Ajax 工具包 dll 版本为 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>

经过数小时的研究,出现此问题的原因是 Plesk 中的设置。具体来说:大多数 JS 验证依赖于 axd 资源,这些资源会被 Plesk 防火墙中的 ModSecurity 阻止。

要解决此问题:您必须将 ModSecuirty Filtering 设置为 DetectionOff 而不是 ON.

希望这对其他人有帮助。