Ajax.dll 无法在 IIS 7.5 Windows Server 2008 中托管的站点上运行

Ajax.dll is not working on a site hosted in IIS 7.5 Windows Server 2008

因此,我的任务是调查一个 ajax 方法无法在 windows server 2008 和 运行 IIS 7.5 上托管的站点上运行。对此进行研究后,发现 Ajax.dll 在 IIS 7.5 中根本没有加载,并且在 system.webserver 部分中进行了一些 Web 配置更改后,我仍然遇到问题。根据其中一篇在线帖子,有人能够通过从服务器中删除 Web 服务器角色并再次添加来解决此问题,他们提供的解释是在添加回来之后,它确实带来了一些有助于解决问题的缺失组件.我可以尝试这样做,但有一件事我不太确定,即目前有少数网站托管在 IIS 7.5 上。如果我删除这个角色,他们会全部消失吗?

这就是我担心的,一旦我删除并添加此角色并将这些站点重新引入 IIS 后必须返回。请指教!

这是我在页面上看到的错误。

您可以在您的站点 web.confifg 文件中添加以下代码,这会导致此错误消息:

<system.webserver>
    <validation validateintegratedmodeconfiguration="false" />
    <modules>
        <add name="ScriptModule" precondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </modules>
    <handlers>
        <remove name="WebServiceHandlerFactory-Integrated" />
  <remove verb="*" path="*.asmx" />
  <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
        <add name="ScriptHandlerFactory" verb="*" path="*.asmx" precondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" precondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
        <add name="ScriptResource" precondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </handlers>
</system.webserver>

此更改不会影响其他站点设置。

ajax.dll not working in iis 7

供您参考 Windows Server 2008 和 2008 R2 的支持已经结束。您可以尝试使用最新的可用操作系统升级 OS。

https://support.microsoft.com/en-us/help/4456235/end-of-support-for-windows-server-2008-and-windows-server-2008-r2

因此,摆脱 Ajax 并引入 jQuery 来验证网站使用 Ajax 方法进行的验证。

$.ajax({
    type: "POST",
    url: "EditTerritoryArea.aspx/CheckValue",
    data: JSON.stringify({ territoryID: _territoryID, code: box, value: value }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        if (response.d != null) // error calling server
        {
            txt.value = "";
            txt.focus();
            alert("A problem occurred while tying to communicate with the server.\nPlease try again in a few moments.");
            return;
        }
    });

一旦确认这是网站打算使用旧 Ajax 方法执行的操作,我就从应用程序中删除了所有 Ajax 引用。