系统未定义

IT技术 asp.net javascript asp.net-ajax
2021-02-08 09:36:38

我有一个正在处理的 ASP.Net/AJAX 控制工具包项目。80%的时间没有问题。页面正常运行。如果您刷新页面,它有时会显示一个 javascript 错误“系统未定义”。

它不会一直发生,但它是可重现的。发生这种情况时,用户必须关闭浏览器并重新打开页面。

这让我相信它可能是一个 IIS 设置。

另一个注意事项。我在收到错误时和没有时都查看了页面源代码。当页面抛出错误时,缺少以下代码:

<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&amp;t=baeb8cc" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
if (typeof(Sys) === 'undefined') throw new Error('ASP.NET Ajax client-side framework failed to load.');
//]]>
</script>
6个回答

我通过在页面上的 HTML 中<script type="text/javascript"></script>向下移动包含 Sys.* 调用块(到正文<asp:Content/>部分关闭之前的最后一个项目)来解决我的问题我最初在<asp:Content/>页面的 HEAD部分中有我的脚本块我在一个有 MasterPageFile 的页面中工作。希望这可以帮助某人。

所以,我遇到了完全相同的问题。包括脚本资源的标记缺失,但在页面的最后,一个Sys.Application.initialize();呼叫正在被渲染。这种情况只发生在我的应用程序的一百页中的一页上,但我Sys.自己没有进行任何调用,也没有使用任何 JavaScript 或 AJAX 控件。有什么想法吗?
2021-03-19 09:36:38
@Cory 我遇到了同样的问题,它似乎偶尔会失败,但并非总是如此。它在开发环境、我的机器和一台服务器上运行良好,但不是“主”生产服务器。
2021-03-29 09:36:38

当我遇到错误时

  • 系统未定义
  • ASP.NET Ajax 客户端框架加载失败

在 IE 中,当在 .NET 2.0 中使用 ASP.NET Ajax 控件时,我需要将以下内容添加到<system.web>标签内的 web.config 文件中

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler" validate="false"/>
</httpHandlers>
没有为我工作。添加了上述行的网页无法加载。:(
2021-03-16 09:36:38
这对我有用,但只需要 <add verb="GET"... 行用于 HttpHandler 中的 .net 2.0 扩展,因为其他行用于 3.5
2021-03-29 09:36:38

尝试将您的 ScriptManager 设置为这个。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
对我来说,问题是我需要EnableCdn="true"在脚本管理器中。所以<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />在我的情况下,部分渲染不是问题。
2021-03-16 09:36:38
得到与通常的答案不同的答案令人耳目一新。我期待着尝试这个,我会告诉你它是否有效。
2021-03-25 09:36:38
好的,我已经有了脚本管理器,但是我注意到 enablepartialrendering 对我来说设置为 false,尽管将其设置为 true 并没有解决我的问题。仅供参考,我也将 combinescripts 设置为 true 。
2021-03-28 09:36:38
我的问题是我完全错过了 ScriptManager。添加它解决了问题。
2021-03-30 09:36:38
昨天我正常工作,今天弹出这个错误。我什么都没改变。我在这里尝试了所有解决方案,但没有任何帮助。
2021-04-10 09:36:38

Dean L 的回答https://stackoverflow.com/a/1718513/292060对我有用,因为我给 Sys 的电话也太早了。由于我使用的是 jQuery,我没有将其向下移动,而是将脚本放在 document.ready 调用中:

$(document).ready(function () {
  Sys. calls here
});

这似乎已经足够晚了 Sys 可用。

哇,优秀!只是,对我来说,我只是将它移到页面底部,以便它最后运行。Sys我没有想到必须“准备好”才能被调用的概念- 我认为它会OnRenderPage_Load. 被这个吓到我了!谢谢!+1
2021-04-14 09:36:38

我正在使用 Telerik 并且遇到了完全相同的问题。

将此添加到 web.config 解决了我的问题:)

<location path="Telerik.Web.UI.WebResource.axd">   
   <system.web>  
     <authorization>  
       <allow users="*"/>  
     </authorization>  
   </system.web>  
</location>

也许它也会帮助你。这是身份验证问题。

来源

那个位置标签放在哪里?包含在代码片段中将是一件好事。
2021-03-15 09:36:38
你肯定是偶尔出现错误还是总是有错误?
2021-03-17 09:36:38