【问题标题】:'Sys' is undefined -- rendered markup is missing a reference to ScriptResource.axd'Sys' 未定义 - 呈现的标记缺少对 ScriptResource.axd 的引用
【发布时间】:2012-07-14 06:14:00
【问题描述】:

是的,著名的“'Sys' 未定义”Microsoft JS 问题。

我已经完成了大约 4 个小时的挖掘并尝试了我能找到的每一个建议,所以在你立即称这是重复之前,请告诉我。

最终,这个问题this one 完全相同,但接受的答案与我的情况无关,OP 不再是活跃成员。


背景

这个应用程序有大约一百页。它们中的每一个最终都继承自同一个基类。这个基类重写了Init 方法,并动态地将ScriptManager 添加到它作为第一个Form 控件。

在其中一个页面上,我遇到了我链接的帖子中描述的问题。我提到接受的答案是相关的。原因如下:

  1. 我没有拨打任何Sys. 电话
  2. 我的页面上没有任何启用 AJAX 的控件
  3. 我的页面上没有任何 JavaScript
  4. 我的 web.config 是准确的,它包含正确的处理程序条目
  5. 在 IIS 6.0 和 IIS 7+ 上都可以重现该问题
  6. 如果我通过<asp:ScriptManager /> 将 ScriptManager 显式添加到页面,则 ScriptResource.axd 包含仍然不会呈现到输出页面
  7. 我已尝试清除浏览器历史记录、临时 ASP.NET 文件、重新启动等,但行为没有改变
  8. 我们的 UAT 环境中的旧版本应用程序可以正常运行;从那时起,基本页面代码和 web.config 文件都发生了变化

我完全被难住了。这是一个 ASP.NET 3.5 web site 项目,在带有 IIS 6.0(Prod 和 UAT)的 Win Server 2003 上运行。我的开发环境是带有 IIS 7.5 的 Win7。两种环境中的行为相同。

问题

有人有什么想法吗?我开始认为这是 ASP.NET 3.5.1 框架中的错误...

【问题讨论】:

标签: asp.net vb.net iis asp.net-ajax scriptmanager


【解决方案1】:

我刚刚遇到了一个类似的问题,我似乎刚刚解决了。

如果您要覆盖页面上除 PageLoad 之外的任何其他页面生命周期事件,请确保触发事件的基本版本。例如。我用的是OnPreRenderComplete

protected override void OnPreRenderComplete(EventArgs e)
{
    base.OnPreRenderComplete(e); //ADDING THIS LINE FIXED THE PROBLEM

    //Add THEAD etc to Gridview
    if (gvQueue.Rows.Count > 0)
    {
            gvQueue.HeaderRow.TableSection = TableRowSection.TableHeader;
    }
}

【讨论】:

    【解决方案2】:

    由于您已经尝试了其他所有方法,并且因为它是可重现的,所以我可以想到 3 个可能的原因供您检查:

    1) 元素定义不正确。

    确保 head 元素已指定 runat="server"。我们也总是提供id,尽管我不认为这是严格要求的:

    <head id="HEAD1" runat="server">
    

    2) 导致异常的代码在包含 ScriptResource.axd 之前被执行。

    为了验证是否是这种情况,我查看了异常发生时页面中加载的内容。如果我没有看到被报告为丢失的资源,我知道我有订购问题。

    我已经看到这是由继承树中的两个 Page.Init(或其他方法)挂钩引起的,当这种情况发生时,您无法保证执行顺序。

    3) 无效的页面结构。

    我见过很多这样的例子,其中一个放错位置的、容易被忽略的字符,例如单引号、双引号或

    为了验证情况并非如此,我首先在设计模式(编辑、高级、验证文档)下验证页面并更正所有错误。

    如果在设计模式下没有错误,我会通过将渲染页面的源代码复制到项目中的空白页面然后进行验证来验证渲染页面。这个过程在页面结构中发现了不止一个微妙的问题。

    4) 如果以上方法都不能解决问题,则可能是框架存在问题。如果有,则可能是由页面中的元素名称或顺序引起的。您可以尝试删除或重新排序页面中的项目,直到问题消失。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2018-09-24
      • 2013-08-19
      • 2011-03-08
      相关资源
      最近更新 更多