【问题标题】:Sys is undefined系统未定义
【发布时间】:2010-09-09 16:09:10
【问题描述】:

我正在处理一个 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>

【问题讨论】:

    标签: asp.net javascript asp.net-ajax


    【解决方案1】:

    尝试将您的 ScriptManager 设置为此。

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

    【讨论】:

    • 获得与通常答案不同的答案令人耳目一新。我期待着尝试一下,如果它有效,我会告诉你。
    • 好的,我已经有了脚本管理器,但我注意到 enablepartialrendering 对我来说设置为 false,尽管将其设置为 true 并不能解决我的问题。仅供参考,我也将 combinescripts 设置为 true。
    • 昨天我工作正常,今天弹出这个错误。我什么都没改变。我在这里尝试了所有解决方案,没有任何帮助。
    • 我的问题是我完全错过了 ScriptManager。添加它解决了问题。
    • 对我来说,问题是我需要在脚本管理器中使用EnableCdn="true"。所以&lt;asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="true" /&gt; 部分渲染不是我的问题。
    【解决方案2】:

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

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

    您可以在此处找到配置信息:http://www.asp.net/AJAX/documentation/live/ConfiguringASPNETAJAX.aspx

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        我遇到了同样的问题,经过多次争论后,我决定尝试隔离问题,并简单地将脚本管理器加载到一个空白页面中,但仍然导致同样的错误。通过将我的站点的 web.config 与一个全新的(工作的)测试站点进行比较,隔离了我发现的问题,在我的 web.config 的 system.web 部分中将 &lt;compilation debug="true"&gt; 更改为 &lt;compilation debug="false"&gt; 可以解决问题。

        我还必须从 system.web 中删除 &lt;xhtmlConformance mode="Legacy"/&gt; 条目以使更新面板正常工作。 Click here 了解此问题的说明。

        【讨论】:

          【解决方案5】:

          遇到了类似的问题,除了我的页面一直在生成 Sys is undefined 错误。

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

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

          我刚刚使用自己制作的 web.config 更新更新了该 web.config,并将其放入我现有的项目中,一切正常。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

            • 所以,我遇到了同样的问题。缺少包含脚本资源的标记,但在页面末尾,正在呈现 Sys.Application.initialize(); 调用 。这发生在我的应用程序的一百分之一的页面上,但我自己没有进行任何 Sys. 调用,也没有使用任何 JavaScript 或 AJAX 控件。有什么想法吗?
            • @Cory 我遇到了同样的问题,它似乎偶尔会失败,但并非总是如此。它在开发环境、我的机器和一台服务器上运行良好,但在“主”生产服务器上运行良好。
            【解决方案7】:

            当我遇到错误时

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

            在 IE 中使用 .NET 2.0 中的 ASP.NET Ajax 控件时,我需要将以下内容添加到 web.config 文件中的 &lt;system.web&gt; 标记中:

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

            【讨论】:

            • 这对我有用,但只需要
            • 对我不起作用。添加了上述行的网页无法加载。 :(
            【解决方案8】:

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

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

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

            否则你会得到 'Sys' is undefined 错误。

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

                一个外部 .net 项目已更新,但未在网站编译中正确获取更改。我的假设是 ASP.NET ajax 无法正确构造 .NET 对象的客户端表示,因此无法正确加载。

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

                【讨论】:

                  【解决方案11】:

                  您好,非常感谢它解决了我的问题,

                  默认情况下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"/>
                  

                  【讨论】:

                    【解决方案12】:

                    您必须在 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>
                    

                    希望这会有所帮助。

                    【讨论】:

                      【解决方案13】:

                      我在使用 Ajax Control Toolkit ToolkitScriptManager 和 URL Write 2.0 的组合时发现了错误。

                      在我的&lt;rewrite&gt; &lt;outboundRules&gt; 中,我有一个先决条件:

                      <preConditions>
                          <preCondition name="IsHTML">
                              <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html"/>
                          </preCondition>
                      </preConditions>
                      

                      但显然我的一些出站规则没有设置为使用前置条件。

                      一旦我在所有出站规则上设置了该前置条件:

                      <rule preCondition="IsHTML" name="MyOutboundRule">
                      

                      没问题了。

                      【讨论】:

                        【解决方案14】:

                        我通过创建单独的 asp.net ajax 解决方案并将所有 ajax 配置从 web.config 复制并粘贴到工作项目来解决了这个问题。

                        这是您应该在 web.config 中设置的必须配置

                            <configuration>
                        <configSections>
                            <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                                <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                                    <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                        </sectionGroup>
                        
                            </sectionGroup>
                        </configSections>
                        

                                <assemblies>
                        
                                    <add assembly="System.Web.Extensions,     Version=1.0.61025.0,       Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                        
                                </assemblies>
                                   </compilation>
                                <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>
                            <system.webServer>
                            <validation validateIntegratedModeConfiguration="false"/>
                            <modules>
                                <add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                            </modules>
                            <handlers>
                                <remove name="WebServiceHandlerFactory-Integrated"/>
                                <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                                <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                                <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"/>
                            </handlers>
                        </system.webServer>
                        

                        【讨论】:

                        • configSections 部分在 Framework 4.6 中对我来说不是必需的,当我放入时实际上给了我一个错误。否则,与 AJAX 扩展 web.config 和我的相比,其他一切看起来都不错.对我来说,web.config 与这个 Sys 错误没有任何关系,尽管它是一个 JavaScript 引用,我在页面中过早地在加载之前进行了引用。但这是一个很好的参考,以防我们的 web.config 中缺少某些行。 :)
                        【解决方案15】:

                        确保您没有任何重写规则会更改您的网址。

                        在我的情况下,应用程序认为它只是比 URL 到达的更深。

                        例如:http://mysite.com/app/page.aspx 是真正的网址。 但是我切断了 /app/ 这对 ASP.net 和 WCF 工作得很好,但显然不适用于 Ajax。

                        【讨论】:

                          【解决方案16】:

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

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

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

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

                          Source

                          【讨论】:

                          • 您确定是偶尔出错还是一直出错?
                          • 那个位置标签放在哪里了?包含在 sn-p 中将是一件好事。
                          【解决方案17】:

                          我遇到了类似的问题,令我惊讶的是,我发现我的一位开发人员将 web.config 保存在与 web123.config 相同的文件夹/解决方案中,并且错误地上传了这两个文件.

                          我一删除 web123.config 文件,这个错误就消失了,并且 ajax 框架正在正确加载。虽然我有

                          <compilation debug="true">
                          

                          就我而言,我也有以下部分。我的项目正在使用框架 3.5

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

                          【讨论】:

                            【解决方案18】:

                            这听起来很愚蠢,但我在 VS2010 中开发并托管在 VS 开发服务器中的网站也遇到了类似的问题。有问题的页面有一个脚本管理器来创建到 wcf 服务的连接。我向服务添加了一个额外的方法,这个错误开始出现。

                            为我解决的问题是将 oroject Web 设置中的“自动分配端口”更改为“特定端口”,并使用不同的端口号。

                            我希望我知道为什么......

                            【讨论】:

                            • 您说的是网站的端口,还是 WCF 服务的端口?但无论哪种方式,您都必须对其进行定义,以便它可以相互连接,所以这对我来说很有意义......
                            【解决方案19】:
                            开发环境:
                            • 开发环境:VS 2012
                            • FX:4.0/4.5
                            • 实现:Master(ScriptManager + UpdatePanel/Timer) + Content (UpdatePanel)
                            • 模式:PageRouting。

                            免责声明:

                            如果所有web.config 的解决方案都不适合您,并且您已经实现了 PageRouting (IIS 7+),那么下面的代码 sn-p 将解决您的问题。

                            背景:

                            无意劫持这个问题,但与其他人有同样的问题,并在此处实施了 100% 的建议,对 .Net 4.0/4.5 进行了少量修改,但没有一个对我有用。

                            在我的情况下,我实现了Page Routing,这让我的问题重演了。基本上它可以运行大约 20 次,调试运行,然后 BAM 会出错并出现 Sys is undefined 错误。

                            在查看了其他几篇关于 Clean-URL 逻辑的帖子后,我记得我已经完成了 PageRouting 设置。

                            这是我用来构建模式的资源:@​​987654322@

                            我的单行代码修复了我的 VS2012 调试问题:

                            rts.Ignore("{resource}.axd/{*pathInfo}")    'Ignores any Resource cache references, used heavily in AJAX interactions.
                            

                            【讨论】:

                              【解决方案20】:

                              即使添加了正确的 web 配置条目后仍然出现此错误?此错误的最常见原因是 JavaScript 过早引用 Sys 命名空间。 然后最明显的解决方法是将 java 脚本块移动到 ScriptManager 控件下方:

                              【讨论】:

                                【解决方案21】:

                                我不认为这一点已被添加,因为我只是花了一些时间来寻找它,我希望它可以提供帮助。

                                我正在使用 IIS 7 并使用 ASP.NET v4 Framework。
                                在我的情况下,将条目添加到 web.config 文件中条目的 和 部分很重要。

                                我的 web.config 文件有很多处理程序,在我的情况下,将 ScriptResources 条目添加到处理程序部分的顶部是最简单的。 最重要的是,它需要放在任何将充当通配符并捕获请求的条目之前。在通配符条目之后添加它会导致它被忽略并且仍然会出现错误。

                                模块可以添加到部分的顶部或底部。

                                Web.config 示例:

                                <system.webServer>
                                    <handlers>
                                      <clear />
                                      <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" />
                                      <!-- Make sure wildcard rules are below the ScriptResource tag -->
                                    </handlers>
                                    <modules>
                                      <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
                                      <!-- Other modules are added here -->
                                    </modules>
                                  </system.webServer>
                                

                                【讨论】:

                                  【解决方案22】:

                                  如果上述方法都不适合您,并且您恰好覆盖了 OnPreRenderComplete,请确保调用 base.OnPreRenderComplete。我的治疗师会很高兴看到我回来

                                  【讨论】:

                                    【解决方案23】:

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

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

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

                                    【讨论】:

                                    • 哇,太好了!只是,对我来说,我只是把它移到了页面的底部,所以它会最后运行。我没有想到 Sys 必须“准备好”才能被调用的概念 - 认为它会在 Page_Load 之前加载 OnRender。看到这个让我眼花缭乱!谢谢! +1
                                    【解决方案24】:

                                    在将我的 AjaxControlToolkit.dll 从 4.1.60623.0 更新到最新版本 4.1.7.725 后,我遇到了同样的问题。 我已经搜索并来到了这个页面,但没有一个答案对我有帮助。 查看 CodePlex zip 文件中的 Ajax Control Toolkit 示例网站后,我意识到 &lt;asp:ScriptManager&gt; 已被新的 &lt;ajaxtoolkit:ToolkitScriptManager&gt; 取代。我这样做了,并且没有 Sys.Extended is undefined 了。

                                    【讨论】:

                                      【解决方案25】:

                                      我有同样的问题,但我通过以下方式解决了它:

                                      将脚本文件放入页面时,请确保它是

                                      <script></script> and not <script />.
                                      

                                      我遵循了这个: http://forums.asp.net/t/1742435.aspx?An+element+with+id+form1+could+not+be+found+Script+error+on+page+load

                                      希望这会有所帮助

                                      【讨论】:

                                        【解决方案26】:

                                        添加

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

                                        请查看enter link description here

                                        【讨论】:

                                          【解决方案27】:

                                          尝试以下解决方案之一:

                                          1.浏览器加载压缩脚本失败

                                          如果您在 IE6 上收到错误消息,通常会出现这种情况,但在其他浏览器上则不会。

                                          脚本资源处理程序 – ScriptResource.axd 在将脚本返回给浏览器之前对其进行压缩。在 RTM 之前的版本中,处理程序一直为所有浏览器执行此操作,并且不可配置。 IE6 的其中一个组件存在问题,阻止它正确加载压缩脚本。请参阅知识库文章here。在 RTM 版本中,我们对此进行了两个修复。一、如果IE6是浏览器客户端我们不压缩。第二,我们现在使压缩可配置。以下是切换 web.config 的方法。

                                          你是怎么解决的?首先,确保您使用的是 AJAX Extensions 1.0 RTM 版本。仅此一项就足够了。您也可以尝试通过编辑您的 web.config 来关闭压缩:

                                          <system.web.extensions>
                                          <scripting>
                                          <scriptResourceHandler enableCompression="false" enableCaching="true" />
                                          </scripting>
                                          </system.web.extensions>
                                          

                                          2。您的应用程序的 web.config 不存在 ScriptResourceHandler 所需的配置

                                          确保您的 web.config 包含随扩展安装提供的默认 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。

                                          您可以通过从此处复制/粘贴完整 url 到 ScriptResource.axd 并查看它返回的内容来检查这是否是问题所在

                                          <script src="/MyWebApp/ScriptResource.axd?[snip - long query string]" type="text/javascript"></script>
                                          

                                          你如何解决这个问题?如果 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 中的“Sys is undefined”错误

                                          将此条目放在&lt;system.webServer/&gt;&lt;handlers/&gt;下:

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

                                          并删除&lt;system.web/&gt;&lt;httpHandlers/&gt;下的那个。

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

                                          【讨论】:

                                            【解决方案28】:

                                            就我而言,我发现了一个非常隐蔽的原因...... Global.ascx.cs 中有这个页面路由,它没有出现在我的子文件夹中的测试中,但是一直返回问题错误..又是奇怪问题的一天。

                                            routes.MapPageRoute("siteDefault", "{culture}/", "~/default.aspx", false, new RouteValueDictionary(new { culture = "(\\w{2})|(\\w{2}-\\w{2})" }));
                                            

                                            【讨论】:

                                              【解决方案29】:

                                              在我的情况下,问题是我在部分回发后放置了以下代码以保留 gridview 表头:

                                                  protected override void OnPreRenderComplete(EventArgs e)
                                                  {
                                                      if (grv.Rows.Count > 0)
                                                      {
                                                          grv.HeaderRow.TableSection = TableRowSection.TableHeader;
                                                      }
                                                  }
                                              

                                              删除此代码停止了该问题。

                                              【讨论】:

                                                【解决方案30】:

                                                我讨厌添加这么大的话题,但我认为我至少有一个可以在 VS2015 中使用的解决方案。

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

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

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

                                                为什么我们需要这样做?

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

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

                                                什么是 CDN?

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

                                                大多数 CDN 用于托管静态资源,例如图像、视频、 音频剪辑、CSS 文件和 JavaScript。你会发现常见的 JavaScript 库、HTML5 垫片、CSS 重置、字体和其他可用资源 在各种公共和私有 CDN 系统上。

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

                                                <script src="https://ajax.aspnetcdn.com/ajax/4.5.1/1/MicrosoftAjax.js" type="text/javascript"></script>
                                                

                                                一旦您设置了EnableCdn="true",Microsoft 就会在下载Sys 库的页面中添加它的小CDN 引用(如上图)。

                                                我希望这可以帮助遇到同样问题的任何人。

                                                【讨论】:

                                                • 即使从逻辑上思考 cdn 在我的情况下不应该是这样做的原因,但它“有效”。尽管如此,还是希望尽快放弃这种古老且过度设计的技术。
                                                猜你喜欢
                                                • 2023-03-06
                                                • 2012-08-17
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 1970-01-01
                                                • 2015-02-06
                                                • 2016-08-16
                                                • 1970-01-01
                                                相关资源
                                                最近更新 更多