今天在做项目时,需要重新部署一台测试环境,折腾差不多了之后访问网站,就开始提示了"错误: ASP.NET Ajax 客户端框架未能加载"的错误,而且是连续爆出一下错误,这是在其它部署环境上没遇到过的问题,顿时郁闷不已:

于是乎就马上google了一把,搜集到了一下解决方法:
- 1、IIS 的"扩展名映射"问题,有人指出如果IIS得脚本映射如果没有.axd则会出现此问题。经验证,不属于此种情况。
- 2、utf-8编码问题。在webconfig中添加<system.web>节点下添加<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>,指定页面的编码格式为utf-8 。无效,看来也不是编码问题。
- 调试模式问题。 3、修改webconfig里的<compilation debug="true">,把它改成false。也无效。
- 4、对项目添加System.Web.Extensions 和System.Web.Extensions.Design的引用。也没用
5、重新安装microsft.net framwork 3.5 sp1,修复环境。同样也无效。
以上就是网上所有的解决方案了,但依然没有解决我的问题,让我头疼不已,搞不定问题可是要加班的啊。 静下心来再仔细分析问题,发现页面上有自动生成的scriptResource.axd文件未找到(404错误),继续Google之,终于发现了最终解决问题的方案: 在webconfig中添加如下配置 <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" />
</handlers>
</system.webServer>
问题解决后,仔细想了想,猜想可能是由于IIS中对axd文件的处理映射为framwork 2.0版本的,而以为往出现此错误的服务器上的处理映射皆为framwork 4.0且分为32位与64位。由于版本的不同所以在2.0版本需要对axd手动添加映射处理。
参考文档 1、http://www.cnblogs.com/Blackie/archive/2009/05/14/1457000.html 2、http://www.haogongju.net/art/903883 3、http://geekswithblogs.net/lorint/archive/2007/03/28/110161.aspx 4、http://social.msdn.microsoft.com/forums/zh-TW/236/thread/88c117c5-920f-4fe3-b1e6-d2e88e5670ec