我现在得到“无法加载 ASP.NET Ajax 客户端框架”。我的 asp.net 4 网站一运行就出现 javascript 错误(打开登录页面)。
它过去只发生在我在调试时在浏览器中按 Ctrl-F5(刷新页面和所有图像/样式表/脚本)之后。
我的应用程序使用 asp.net 4(最初写在 1.1 或 2)、WCF、JsTree、一些 Telerik 控件和 MS AJAX 扩展/工具包。
在几天的谷歌搜索中,我发现了有同样问题的人给出的大量解决方案(包括 SO 和 Telerik 的帮助论坛上的解决方案):
我尝试了以下方法,没有一个对我有用:
- 尝试在页面上放置 ToolkitScriptManager 而不是 ScriptManager
- 转到“程序和功能”控制面板并在“Microsoft .net framework 4 Client profile”和“Microsoft .net framework 4 Extended”上进行“修复”
- 将 ScriptManager 移动到页面底部
- 在 Web.config 中,设置编译 debug="false"
- 开始了一个新的 ASP.NET 4 项目,在页面中添加和更新了面板,查看了 web.config 并试图让我的 web.config 看起来更像它
- 检查PC的系统日期是否正确
- 在我的 web.config 中使用 location 元素来允许未经身份验证的访问 WebResource.axd、ScriptResource.axd 和 Telerik.Web.UI.WebResource.axd(我在这个站点中有 Telerik 控件)
- 添加 routes.Ignore("{resource}.axd/{*pathInfo}"); 到我在 global.asax 中的路线注册
这个问题还有其他解决方案吗?
如果需要,我可以发布 web.config 或代码。
更新 1:更多信息
我查看了使用 firebug 的“net”选项卡发生的情况。对 ScriptResource.axd 和 Webresource.axd 的 GET 请求都以 404 失败。这是否进一步说明了这个问题?
更新 2:部分解决方案? 在向网站添加 WCF 服务之前,我使用源代码控制历史记录将 web.config 恢复到原来的状态。最终起作用的 web.config 就在我添加这个之前:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="FoldersAspNetAjaxBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service name="Folders">
<endpoint address="" behaviorConfiguration="FoldersAspNetAjaxBehavior" binding="webHttpBinding" contract="Folders" />
</service>
</services>
</system.serviceModel>
...并从我的 global.asax 中删除了关联的路由线:
routes.Add(new System.ServiceModel.Activation.ServiceRoute("", new System.ServiceModel.Activation.WebServiceHostFactory(), typeof(Folders)));
所以其中一个或两个都是罪魁祸首。谁能建议 WCF 服务或其路由如何导致此 MS Ajax 错误?
这是我的第一个 WCF 服务。我几乎不明白上面的代码在做什么,但我怀疑路由问题是某个地方问题的核心......
或者- 任何人都可以建议 WCF 的替代方案吗?如果我能以另一种方式将我的 JSON 数据传递给 jquery,我可以没有它。可能是 HttpHandler,或者 WebService,或者将 JSON 作为 response.write 吐出的 webform 之类的?
更新 2:路由
看起来 WCF 服务所需的 global.asax 中的路由内容是问题所在(见上文)。注释掉一行似乎可以解决问题。打算尝试更改路线路径...
已解决:我自己解决了,看到我接受的答案,但如果没有一些非常有见地的答案的正确建议,肯定不可能这么快完成,谢谢大家。