当前位置:编程学习 > C#/ASP.NET >>

ASP.NET Ajax 客户端框架未能加载


项目从VS 2003(.Net 1.1)升级到VS 2008(.Net 4.0)

添加ScriptManager、UpdatePanel后出现 

"ASP.NET Ajax 客户端框架未能加载"

"Sys"未定义

试过搜索过的所有方法都不行。

在同一解决方案新建一个项目,随手建个.aspx都可以,不会出现以上提示。

但在原项目建个空.aspx添加控件后就是不行,解决方案有10+个项目,其中有调成功过1个项目,但过程调了很多,具体不知道问题出现在哪。后来按印象的步骤去调其它项目,也还是不行。 

感觉问题出现在Web.config或引用的DLL上。

特来求助!



--------------------编程问答-------------------- --------------------编程问答-------------------- 看看你“随手建的”项目的web.config文件内容有什么不同。删除你的vs2003下创建的垃圾web.config文件,拷贝精简的web.config文件内容。 --------------------编程问答-------------------- vs2008的版本是.net3.5,
vs2010的版本是.net4.0,
.net4.0的是MicrosoftAjax,这个一直在更新,最新的版本发布于2011年11月

到官网下载对应的版本:
http://ajaxcontroltoolkit.codeplex.com/releases/view/76976

在项目中引用ajaxcontrolToolkit.dll
webconfig配置:
<controls> 
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit" />
....

如果页面中静态声明,可以对应的这么写:
<ajaxToolkit:ToolkitScriptManager ID="Tsm1" runat="server"></ajaxToolkit:ToolkitScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
.... --------------------编程问答-------------------- “ScriptManager、UpdatePanel、"ASP.NET Ajax 客户端框架未能加载"、"Sys"未定义”等跟 asp.net ajax toolkit没有关系,不需要声明那个asssembly。

而且微软一直没有真正去开发ajax toolkit,而是正了个简单的jQuery文件就放弃asp.net ajax进一步支持了,所以即年前我也就只好放弃试用ajax toolkit了。 --------------------编程问答-------------------- 实际上,microsoftAjax的客户端框架,完全可以脱离asp.net使用
客户端只要引用microsfotAjax.js,整个客户端开发平台就搭建起来了,
而这个js库仅仅84k,微软还提供CDN加速

Microsoft Ajax Library 客户端引用:
.net4.0:
http://msdn.microsoft.com/zh-cn/library/bb397536.aspx
.net3.5:
http://msdn.microsoft.com/zh-cn/library/bb397536(v=vs.90).aspx --------------------编程问答--------------------
引用 4 楼  的回复:
“ScriptManager、UpdatePanel、"ASP.NET Ajax 客户端框架未能加载"、"Sys"未定义”等跟 asp.net ajax toolkit没有关系,不需要声明那个asssembly。

而且微软一直没有真正去开发ajax toolkit,而是正了个简单的jQuery文件就放弃asp.net ajax进一步支持了,所以即年前我也就只好放弃试用ajax toolkit……

无论是服务器控件,还是客户端控件,都使用自己的控件库,
有现成的,就继承过来自己扩展,没现成的,自己开发咯 --------------------编程问答--------------------
引用 4 楼  的回复:

在没有认真了解microsoftAjax之前,我持有和你一样的观点,
正如3楼所述,微软一直在更新ajax库
不知道5楼的链接你是否仔细看过 --------------------编程问答-------------------- 多谢两位回复。

Webconfig我有删掉,让VS重建过。也不行。


http://msdn.microsoft.com/zh-cn/library/bb397536.aspx这个地址介绍的空间都要引用么?

microsfotAjax.js这个文件有直接下载吧?



--------------------编程问答-------------------- Sys 命名空间

Sys.Net 命名空间

Sys.Serialization 命名空间、

Sys.Services 命名空间

Sys.UI 命名空间。

Sys.WebForms 命名空间

添加引用里面找不到这些DLL来引用,这几个是怎么来的? --------------------编程问答-------------------- 3楼说了,你只要引用一个dll就可以了 --------------------编程问答-------------------- 还是提示那个不能加载,感觉不像是需要添加这个microsoftAjax.dll的问题,我随手建的项目不用加这个DLL都可以的。

HTML代码

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Smart.Web.UI.SystemData.WebForm1" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <ajaxtoolkit:toolkitscriptmanager ID="Tsm1" runat="server"></ajaxtoolkit:toolkitscriptmanager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

web.config

<?xml version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      </assemblies>
    </compilation>
    <globalization responseEncoding="utf-8" requestEncoding="utf-8"/>
    <pages>
      <controls>
        <add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit" />
      </controls>
    </pages>
  </system.web>
</configuration>

--------------------编程问答-------------------- 我看一个前端类库,最低级的,要看看它的grid电子表编辑控件的功能是否强大。

假设一个类库连这个都没有,只有一些“小鱼小虾”小技巧,我觉得那类ajax框架与我需要制作的企业应用系统的要求相差很远,我完全可以因为别的框架需要掌握而立刻放弃这类学习曲线奇陡、连简单的grid表控件都没有的框架。 --------------------编程问答-------------------- 而开发普通的网页,使用很简单的jQuery体系架构等就很好。实在需要时我宁可花钱请人去开发jQuery插件,因为它值得维护。 --------------------编程问答--------------------
引用 11 楼  的回复:
还是提示那个不能加载,感觉不像是需要添加这个microsoftAjax.dll的问题,我随手建的项目不用加这个

我说的是引用ajaxcontrolToolkit.dll,
而不是microsoftAjax.dll,实际上没有你说的这个东东

微软的ajax库的名字叫做:microsoftAjax,它涵盖的不仅仅是你所用到的这个ajaxcontrolToolkit.dll --------------------编程问答--------------------
引用 12 楼  的回复:
我看一个前端类库,最低级的,要看看它的grid电子表编辑控件的功能是否强大。

假设一个类库连这个都没有,只有一些“小鱼小虾”小技巧,我觉得那类ajax框架与我需要制作的企业应用系统的要求相差很远,我完全可以因为别的框架需要掌握而立刻放弃这类学习曲线奇陡、连简单的grid表控件都没有的框架。


我是觉得微软这个控件比较好用,其它代码写CS里挺方便, grid也是用微软的grid,没用第三方的。
对AJAX了解比较少 --------------------编程问答--------------------
引用 14 楼  的回复:
引用 11 楼  的回复:
还是提示那个不能加载,感觉不像是需要添加这个microsoftAjax.dll的问题,我随手建的项目不用加这个
我说的是引用ajaxcontrolToolkit.dll,
而不是microsoftAjax.dll,实际上没有你说的这个东东

微软的ajax库的名字叫做:microsoftAjax,它涵盖的不仅仅是你所用到的这个ajaxcontrolToolk……


我打错了,我是引用ajaxcontrolToolkit.dll。 --------------------编程问答--------------------
引用 12 楼  的回复:
我看一个前端类库,最低级的,要看看它的grid电子表编辑控件的功能是否强大。

一个类库的生产效率在于是否能支持面向对象设计的实现要求,
如果说SL的UI换成html,我可不想把所有的界面都重新开发一遍,

即便没有gird,也是视图控制器自己去渲染视图,根本就不需要程序员面对dom,
程序员最多面对的是UI无关的统一ViewModel,
当我们需要一个grid或者list输出的时候,
根本就不需要知道驱动器到底是用table还是list又或者是div去渲染的

一个网格的编辑功能无非就是一个输出视图和输入视图的组装,
无论是microsfotAjax,winform,webform,SL,都能以OOPL的编程方式支持我们对视图的统一描述,
即便没有gird,也是视图控制器自己去渲染视图,根本就不需要程序员面对dom,
程序员最多面对的是UI无关的统一ViewModel,
当我们需要一个grid或者list输出的时候,
根本就不需要知道驱动器到底是用table还是list又或者是div去渲染的

一个网格的编辑功能无非就是一个输出视图和输入视图的组装,
无论是microsfotAjax,winform,webform,SL,都能以OOPL的编程方式支持我们对视图的统一描述,
--------------------编程问答-------------------- 我新创建的项目用ajaxcontrolToolkit.dll,也没问题

就是原项目上的怎么用都有那个问题。郁闷死我了

不知道IIS有没有关系? 原项目是IIS有虚拟目录指向的,而新的项目是VS虚拟一个端口的。 --------------------编程问答-------------------- 你应该检查web项目引用的.net组件:
System.Web.Extensions的版本是否正确,
--------------------编程问答--------------------

            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
            function EndRequestHandler(sender, args) 
            { 
                if (args.get_error() != undefined) 
                { 
                    if(args.get_error().message.substring(0, 51) == "Sys.WebForms.PageRequestManagerParserErrorException") 
                    {
                        //window.location.reload();  //出现Session丢失时的错误处理,可以自己定义。
                        document.getElementById("登陆控件的ID").click();
                    } 
                    else
                    {
                        alert("发生错误!原因可能是数据不完整,或网络延迟。"); //其他错误的处理。
                    }
                    args.set_errorHandled(true); 
                }
            } 


在页面加上这句话试试
--------------------编程问答-------------------- http://blog.csdn.net/fengyarongaa/article/details/7525615 --------------------编程问答--------------------
引用 19 楼  的回复:
你应该检查web项目引用的.net组件:
System.Web.Extensions的版本是否正确,


删除过System.Web.Extensions,重新添加Net4.0的了,检查过NET的DLL都是4.0了,除自已的类外。 --------------------编程问答--------------------
引用 21 楼  的回复:
http://blog.csdn.net/fengyarongaa/article/details/7525615


试了也不行。JS也是报Sys.WebForms.PageRequestManager这行的'Sys'未定义 --------------------编程问答-------------------- 子项目可以加载了,但主项目不行。

好像问题出现在IIS上,默认.AXD好像不行,修改一下再保存回来好像才行。

我的系统是 XP + IIS5.1 --------------------编程问答-------------------- Ajax确实有点难弄 --------------------编程问答-------------------- http://weblogs.asp.net/chrisri/archive/2007/02/02/demystifying-sys-is-undefined.aspx 请参考 sys 找不到的解决办法 --------------------编程问答-------------------- <httpHandlers>
      <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> --------------------编程问答-------------------- VS 2008 不是.NET4 --------------------编程问答-------------------- 如果是 iis7  就放在 <system.webServer> 里面 --------------------编程问答-------------------- --------------------编程问答-------------------- 估计是因为ajax版本不一致 --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼  的回复:
而开发普通的网页,使用很简单的jQuery体系架构等就很好。实在需要时我宁可花钱请人去开发jQuery插件,因为它值得维护。
--------------------编程问答--------------------
引用 28 楼  的回复:
VS 2008 不是.NET4


我说错了,是升级到VS2010(.Net4.0) --------------------编程问答--------------------
引用 27 楼  的回复:
<httpHandlers>
      <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3……


这个也没效,郁闷中!
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,