【发布时间】:2011-01-21 05:34:17
【问题描述】:
我现在收到“无法加载 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 控件)
- 添加了路由。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 中的路由内容是问题(见上文)。注释掉一行似乎可以解决问题。正在尝试更改路由路径...
已解决:我自己解决了,看看我接受的答案,但如果没有一些非常有见地的答案的正确建议,肯定不可能这么快完成,谢谢大家。
【问题讨论】:
标签: wcf asp.net-4.0 routes scriptresource.axd