系统未定义

61 javascript asp.net asp.net-ajax

我正在开发一个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>
Run Code Online (Sandbox Code Playgroud)

Dea*_*n L 53

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

  • 所以,我有同样的问题.缺少包含脚本资源的标记,但在页面的末尾,正在呈现`Sys.Application.initialize();`call**.这只发生在我的应用程序中的一百页中,但我没有自己做任何`Sys.调用,也没有使用任何JavaScript或AJAX控件.有什么想法吗? (2认同)

Ray*_*ega 12

当我遇到错误时

  • 系统未定义
  • 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>
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但只需要在<HttpHandler中的.net 2.0扩展名的<add verb ="GET"...行,因为其他行是3.5 (2认同)

goo*_*eye 8

Dean的回答,https: //stackoverflow.com/a/1718513/292060对我有用,因为我对Sys的调用还为时过早.由于我使用的是jQuery,而不是将其移动,我将脚本放在document.ready调用中:

$(document).ready(function () {
  Sys. calls here
});
Run Code Online (Sandbox Code Playgroud)

这似乎已经足够晚,Sys可用.


小智 7

尝试将ScriptManager设置为此.

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" /> 
Run Code Online (Sandbox Code Playgroud)

  • 我的问题是我完全错过了ScriptManager.添加它修复了问题. (2认同)

Zvi*_*adi 7

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

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

<location path="Telerik.Web.UI.WebResource.axd">   
   <system.web>  
     <authorization>  
       <allow users="*"/>  
     </authorization>  
   </system.web>  
</location>
Run Code Online (Sandbox Code Playgroud)

也许它也会对你有所帮助.这是身份验证问题.

资源


Haw*_*eye 7

我讨厌在这么晚的时间里添加如此庞大的主题,但我认为我有一个至少可以在 VS2015 中工作的解决方案。

\n

我正在寻找系统错误的原因,唯一对我有用的解决方案是添加EnableCdn="true"如下ScriptManager内容:

\n
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />\n
Run Code Online (Sandbox Code Playgroud)\n

有关详细信息,请参阅MSDN 。

\n

为什么我们需要这样做?

\n

在开发 asp.net Web 应用程序时,您必须启用 CDN,以便 Microsoft 可以下载该Sys.库。

\n

您的页面中可能有一个脚本正在使用该Sys函数。设置EnableCdn="true"将确保Sys在使用库之前先下载该库。

\n

什么是 CDN?

\n

它代表“内容交付网络”,启用它后可以通过简单的引用下载某些资源。

\n

引用自https://www.sitepoint.com/7-reasons-to-use-a-cdn/

\n
\n

大多数 CDN 用于托管静态资源,例如图像、视频、音频剪辑、CSS 文件和 JavaScript。您\xe2\x80\x99将在各种公共和私人 CDN 系统中找到常见的 JavaScript\n库、HTML5 垫片、CSS 重置、字体和其他可用资源。

\n
\n

谷歌和微软都有 CDN。您所要做的就是添加参考。通常 CDN 是通过脚本资源添加的:

\n
<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>\n
Run Code Online (Sandbox Code Playgroud)\n

设置完成后EnableCdn="true",微软将在下载库的页面中添加其小型 CDN 参考(如上面的参考)Sys

\n

我希望这对遇到同样问题的人有所帮助。

\n


小智 5

您必须在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>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.


Ale*_* N. 5

尝试以下解决方案之一:

1.浏览器无法加载压缩脚本

如果您在IE6上收到错误,通常就是这种情况,但在其他浏览器上却没有.

脚本资源处理程序 - ScriptResource.axd在将脚本返回到浏览器之前压缩脚本.在RTM之前的版本中,处理程序一直为所有浏览器执行此操作,并且它不可配置.IE6的某个组件中存在一个问题,即无法正确加载压缩脚本.请参阅此处的 KB文章.在RTM版本中,我们为此做了两个修复.一,如果IE6是浏览器客户端,我们不压缩.二,我们现在已经进行了压缩配置.以下是切换web.config的方法.

你是如何解决的?首先,确保您使用的是AJAX Extensions 1.0 RTM版本.仅此一点就足够了.您还可以通过编辑web.config来尝试关闭压缩,以获得以下内容:

<system.web.extensions>
<scripting>
<scriptResourceHandler enableCompression="false" enableCaching="true" />
</scripting>
</system.web.extensions>
Run Code Online (Sandbox Code Playgroud)

2.对于应用程序的web.config,不存在ScriptResourceHandler所需的配置

确保您的web.config包含随extensions install提供的默认web.config文件中的条目.(默认位置:C:\ Program Files\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025)

3.您用于Web的虚拟目录未正确标记为应用程序(因此配置未加载) - IIS Web会发生这种情况.

确保您使用的是Web应用程序,而不仅仅是虚拟目录

4. ScriptResource.axd请求返回404

这通常表明ASP.NET整体错误配置.在ASP.NET的默认安装中,对以.axd结尾的资源的任何Web请求都通过isapi映射从IIS传递到ASP.NET.此外,映射配置为不检查文件是否存在.如果该映射不存在,或者检查文件是否存在未被禁用,则IIS将尝试查找物理文件ScriptResource.axd,找不到它,并返回404.

您可以通过从这里coipy /粘贴完整URL到ScriptResource.axd来检查这是否是问题,并查看它返回的内容

<script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

你是如何解决这个问题的?如果没有正确安装ASP.NET,您可以运行"aspnet_regiis.exe"命令行工具来修复它.它位于C:\ WINDOWS\Microsoft.Net\Framework\v2.0.50727中.您可以运行"aspnet_regiis -i -enable",它使用IIS完全注册ASP.NET,并确保在IIS6中启用了ISAPI.您还可以运行"aspnet_regiis -s w3svc/1/root/MyWebApp"来仅修复Web应用程序的注册.

5.解决IIS 7下ASP.NET AJAX RTM中的"系统未定义"错误

把这个条目放在<system.webServer/><handlers/>:

<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" />
Run Code Online (Sandbox Code Playgroud)

并删除下一个<system.web/><httpHandlers/>.

参考文献:http : //weblogs.asp.net/chrisri/demystifying-sys-is-undefined http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx