Sys未定义

时间:2020-03-05 18:56:45  来源:igfitidea点击:

我有一个正在开发的ASP.Net/AJAX控制套件项目。 80%的时间没有问题。该页面将按预期运行。如果刷新页面,它有时会显示一个JavaScript错误" Sys is undefined"。

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

这使我相信这可能是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>

解决方案

回答

尝试将ScriptManager设置为此。

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" />

回答

除了确保页面上具有ScriptManager之外,还需要确保正确配置了web.config。

当发布ASP.NET AJAX 1.0(用于.NET 2.0)时,有许多自定义的web.config设置,其中添加了处理程序,控件等。

我们可以在这里找到配置信息:http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

回答

确保与.NET AJAX交互的所有客户端脚本的末尾都有以下行:

if (typeof(Sys) !== 'undefined')  Sys.Application.notifyScriptLoaded();

这告诉脚本管理器整个脚本文件已加载,并且可以开始调用客户端方法

回答

我遇到了同样的问题,经过多方争执之后,我决定尝试找出问题所在,只将脚本管理器加载到一个空页面中,这仍然会导致同样的错误。通过将站点的web.config与全新的(正在运行的)测试站点进行比较,发现了问题所在,从而将系统中的<compilation debug =" true">更改为<compilation debug =" false">`。我的web.config的.web部分解决了该问题。

我还必须从system.web中删除&lt;xhtmlConformance mode =" Legacy" />条目,以使更新面板正常工作。单击此处了解此问题。

回答

除了我的页面始终生成Sys是未定义的错误之外,还有一个类似的问题。

对我而言,问题源于以下事实:我刚刚安装了.NET 2.0的AJAX 1.0扩展,但已经在Visual Studio中创建了我的Web项目。

当尝试创建AJAX控件时,我一直遇到此错误,我在这里发现了Slace和MadMax1138s的帖子。并确定这是我的web.config,我使用新的"启用AJAX的网站"项目类型创建了一个新项目,并且确定web.config具有使用AJAX控件所需的大量自定义项。

我刚刚用已经完成的web.config更新来更新了该web.config,并将其放到我现有的项目中,并且一切正常。

回答

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

回答

当我遇到错误时

  • Sys未定义
  • 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>

回答

请检查服务器是否设置了正确的时间和日期...

大约浪费了6个小时后,我在某处阅读了...

必须更新服务器的日期和时间才能正常工作...

否则,我们将得到" Sys"是未定义的错误。

回答

只需在解决方案根目录中创建空白.axd文件,根目录问题就可以解决。 (2个文件:scriptresouce.asx,webresource.asxd)

回答

今天,我一直看到完全相同的错误,但这不是配置或者直接的JavaScript问题。

外部.net项目已更新,但网站的编译未正确吸收所做的更改。我的推测是ASP.NET ajax无法正确构造.NET对象的客户端表示,因此无法正确加载。

为了解决该问题,我重建了外部项目,并重建了遇到问题的解决方案。问题消失了。

回答

我们好,thanx解决了我的问题,

默认情况下vs 2008将添加

<!--<add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add verb="GET" path="ScriptResource.axd" type="Microsoft.Web.Handlers.ScriptResourceHandler" validate="false" />-->

需要将默认配置(以上)更正为以下代码
使固定

<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"/>

回答

我们必须在web.config中添加这些行

<httpHandlers>
  <remove verb="*" path="*.asmx"/>
  <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
<httpModules>
  <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>

希望这可以帮助。