61 javascript asp.net asp.net-ajax
我正在开发一个ASP.Net/AJAX控件包项目.80%的时间没有问题.页面应该运行.如果您刷新页面,它有时会显示一个javascript错误"系统未定义".
它不会一直发生,但它是可重复的.当它发生时,用户必须关闭他们的浏览器并重新打开页面.
这让我相信它可能是一个IIS设置.
另一个说明.当我收到错误时,我查看了页面源,何时没有.当页面抛出错误时,缺少以下代码:
<script src="/ScriptResource.axd?d=EAvfjPfYejDh0Z2Zq5zTR_TXqL0DgVcj_h1wz8cst6uXazNiprV1LnAGq3uL8N2vRbpXu46VsAMFGSgpfovx9_cO8tpy2so6Qm_0HXVGg_Y1&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的页面内工作.希望这有助于某人.
Ray*_*ega 12
当我遇到错误时
在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)
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)
我正在使用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)
也许它也会对你有所帮助.这是身份验证问题.
我讨厌在这么晚的时间里添加如此庞大的主题,但我认为我有一个至少可以在 VS2015 中工作的解决方案。
\n我正在寻找系统错误的原因,唯一对我有用的解决方案是添加EnableCdn="true"如下ScriptManager内容:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" />\nRun Code Online (Sandbox Code Playgroud)\n有关详细信息,请参阅MSDN 。
\n为什么我们需要这样做?
\n在开发 asp.net Web 应用程序时,您必须启用 CDN,以便 Microsoft 可以下载该Sys.库。
您的页面中可能有一个脚本正在使用该Sys函数。设置EnableCdn="true"将确保Sys在使用库之前先下载该库。
什么是 CDN?
\n它代表“内容交付网络”,启用它后可以通过简单的引用下载某些资源。
\n引用自https://www.sitepoint.com/7-reasons-to-use-a-cdn/
\n\n\n大多数 CDN 用于托管静态资源,例如图像、视频、音频剪辑、CSS 文件和 JavaScript。您\xe2\x80\x99将在各种公共和私人 CDN 系统中找到常见的 JavaScript\n库、HTML5 垫片、CSS 重置、字体和其他可用资源。
\n
谷歌和微软都有 CDN。您所要做的就是添加参考。通常 CDN 是通过脚本资源添加的:
\n<script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>\nRun Code Online (Sandbox Code Playgroud)\n设置完成后EnableCdn="true",微软将在下载库的页面中添加其小型 CDN 参考(如上面的参考)Sys。
我希望这对遇到同样问题的人有所帮助。
\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)
希望这可以帮助.
尝试以下解决方案之一:
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
| 归档时间: |
|
| 查看次数: |
128313 次 |
| 最近记录: |