代码之家  ›  专栏  ›  技术社区  ›  Macros

ASP.NET AJAX问题

  •  1
  • Macros  · 技术社区  · 14 年前

    我正在开发一个ASP.NET Web应用程序,它使用了相当多的Ajax——并不太复杂,只是更新面板和Ajax工具箱中的控件。在移交之前,它使用的是Ajax1.0,然后升级到3.5框架。工具箱控件被正确的版本替换,我可以在项目中创建一个新页面,其中包含更新面板、脚本管理器和模式弹出扩展程序,所有这些都可以正常工作。

    然而,一些现有页面上的Ajax突然停止工作了——我有3个母版页,我认为它是其中之一,但是现在问题似乎已经“扩散”到了另一个。我已经测试了母版页(也就是放置脚本管理器的地方),这也很好地工作。

    当我加载其中一个有问题的页面并检查Firefox错误控制台时,有很多问题,主要是:

    Sys.Res is undefined
    Sys.Application is undefined
    Sys.UI.DomEvent is undefined
    

    这一切似乎都表明,出于某种原因,Ajax库没有加载到这些页面上,但是我不明白为什么?以前有人碰到过类似的问题吗?

    更新

    大多数页面只显示用户控件,而用户控件又包含内容,包括所有Ajax。其中一个不起作用的页面只包含一个用户控件。如果我创建了一个新页面,并将其命名为不同的名称(例如testpage1.aspx),请使用相同的母版页,然后拖动上面的控件即可正常工作。所有的Ajax都按预期工作。

    然后,如果我删除了不起作用的页面,那么就创建一个相同nakme的新页面,并执行完全相同的步骤来添加UserControl,它就不起作用了。我尝试清除c:\users\\appdata\local\microsoft\website cache中的网站缓存,但这没有任何区别。

    实际上,我尝试创建一个与其中一个非工作页面同名的页面,并确保它在另一个文件夹中是相同的。但是,如果我删除了非工作页并将其复制到文件夹中,则此页工作正常!!!!还有其他缓存吗?

    进一步更新

    当Ajax是网站的特定文件夹时,它似乎停止工作-这只是一个带有web.config for forms auth的标准文件夹,其中如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <system.web>
            <authorization>
                <allow roles="Master Admin" />
                <allow roles="Introducer" />
                <deny users="*" />
            </authorization>
        </system.web>
    </configuration>
    

    表单验证是否阻止脚本表单加载?

    2 回复  |  直到 14 年前
        1
  •  0
  •   Kris van der Mast    14 年前

    尝试将scriptmanager控件替换为 工具包脚本管理器 控制。

    还可以尝试其他方法:在global.asax中,处理authenticateRequest事件,并查看是否请求了该文件。例如:

    protected void Application_AuthenticateRequest(object sender, EventArgs e)
    {
        if(Request.Path.ToLower.EndsWith(".axd"))
        {
            Context.SkipAuthorization = true;
            return;
        }
    }
    
        2
  •  0
  •   Macros    14 年前

    我最终解决了这个问题,但是我仍然不知道为什么会发生这个问题。要修复它,我必须将页面复制到新文件夹中,删除旧文件夹,然后重命名新文件夹以匹配旧文件夹??

    推荐文章