【问题标题】:Ajax.dll is not working on a site hosted in IIS 7.5 Windows Server 2008Ajax.dll 无法在 IIS 7.5 Windows Server 2008 中托管的站点上运行
【发布时间】:2020-06-17 15:09:32
【问题描述】:

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

这就是我担心在删除并添加此角色并将这些站点再次带入 IIS 后必须返回的原因。请指教!

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

【问题讨论】:

    标签: asp.net ajax windows iis-7.5


    【解决方案1】:

    您可以在导致此错误消息的站点 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 的支持已结束。您可以尝试使用最新的可用操作系统升级您的操作系统。

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

    【讨论】:

    • 嗨,Jalpa,我确实尝试了您在上面提出的解决方案,但这也没有帮助。我正在做的一件事是摆脱 Ajax 方法并使用 jQuery,因为过去几天我一直在尝试解决这个问题,但没有得到任何结果。
    • @bladerunner 您能否提供示例代码以重现该问题。以及您尝试使用 jquery 更改的 ajax。
    • 是的,当然。基本上,就是这一行: var response = AjaxMethods.CheckValue(_territoryID, box, value);在代码隐藏中,它使用 Ajax 实用程序,我相信版本是 1.1 来注册 dll,如下面的代码所示。 Ajax.Utility.RegisterTypeForAjax(typeof(AjaxMethods));同样的事情在 IIS 6 上托管的站点上运行良好,但是当该站点移至 IIS 7.5 时,该脚本停止运行。我没有重新发明轮子,而是决定停止使用 Ajax,因为 Microsoft 不再支持它,而是用 jquery ajax 调用替换它。我将在此处发布。
    【解决方案2】:

    因此,摆脱 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 引用。

    【讨论】:

      猜你喜欢
      • 2018-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2013-07-17
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      相关资源
      最近更新 更多