部署好网站后运行发现JS脚本错误,提示ASP.NET Ajax client-side framework failed to load,后来到处找原因,就是找不到,从头到尾解决方法如下,最后终于成功。
解决方法如下:
原因是因为IIS7.5读取web.config的方式改变了,不再读取<system.web>的<httpHandlerss>的设置,而是改成了读取<system.webServer>的<handlers>的设置。
<system.web> <httpHandlers> <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/> </httpHandlers> </system.web>
在IIS7.5下要改成如下:
<system.webServer> <handlers> <add name="ReportViewerWebControl" path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </handlers> </system.webServer>
设置完成,可以正常显示
这边如果有是因为IIS7.0导致无法显示的朋友可以按照上面的方法试一下。
但对于我还是没有成功。
从一开始我就条件反射的以为是webconfig配置错误。。由于我装的是framework 4.0,后来用VS2010编译后重新发布网站,还是不行,经过各种方法,最后还好,终于解决问题。
解决方案如下:
情况一:未设置编码
在<system.web>节点中加个 <globalization requestEncoding="utf-8" responseEncoding="utf-8"/> 就可以解决。
情况二:发布网站时没有添加引用(用VS2008会出现这样情况)
因为VS2008考虑到安全因素,没有在发布程序前添加System.Web.Extensions System.Web.Extensions.Design两个DLL,需自己添加.
情况三:WEBConfig配置问题
在web.config的system.web节中添加
<httpHandlers><remove path="*.asmx" verb="*"/><add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/><!--<add path="*_AppService.axd" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>--><add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/></httpHandlers><httpModules><add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/></httpModules>
即可解决。
情况四:IIS配置问题
查看IIS的配置(如果不是本地就得联系空间服务商),在应用程序配置中查找.axd映射,如果没有就新建,映射路径和.aspx一样,注意不要勾选”检查文件是否存在“,确定后测试下效果。如果已存在映射就检查下路径是否正确以及有没有勾选”检查文件是否存在“,问题应该能够解决
基本上出现的都是上面这些情况。。
然后本人就一个个方法的试。。结果。。没有一个成功。。。
最后只能认为是环境问题了,
是的话那就只有一个,就是axd的问题,但是axd这边确认文件是否存在也已经去掉了所以还是不知道在哪里出错
后来仔细一看发现是这里的问题
在IIS上面的网站属性下面 会有个一个 通配符应用程序映射(执行顺序) 这里不知道为什么装了framework 4.0后就多了一个关于ASPNET_ISAPI.DLL的设置。
然后这边的“确认文件是否存在”被打上了勾。
然后去掉。。果然解决了问题。
注:“简单来讲就是isapi是用来处理axd的 但实际上axd不存在 所以就出错 而他这里的判断 确认文件是否存在就 判断
isapi 处理的axd 存在不存在”