Ajax扩展器和网络验证器在迁移到Win Server 2019后无法正常工作



我曾经在Windows Server 2012 R2上运行。net网站,我将网站移动到2019服务器,现在所有Ajax扩展程序和标准验证器停止工作,但代码仍然运行没有问题。我花了很长时间试图找出原因。该网站在服务器内部的本地主机以及我的本地机器上正常工作,我怀疑在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验证依赖于额外的资源,这些资源会被Plesk防火墙中的ModSecurity阻止。

要解决这个问题:你必须将modsecurity Filtering设置为Detection从strong>不是.

希望能对别人有所帮助。

最新更新