【问题标题】:Turning an ASP.NET Website into an AJAX-Enabled one将 ASP.NET 网站变成启用 AJAX 的网站
【发布时间】:2011-09-07 02:53:03
【问题描述】:

我已经成功下载并安装了AJAX框架和控件工具包。

在尝试将任何 AJAX 控件(如 UpdatePanels 或 ScriptManagers)插入现有的 ASP.NET 网站(当前没有 AJAX 功能)时,我收到以下错误:

“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”

作为一个测试,我创建了一个全新的项目,作为一个支持 ASP.NET AJAX 的网站,如下所示:



在这个项目的默认页面中已经有一个ScriptManager,我已经能够插入一个UpdatePanel,用一个标签和一个按钮来做一个小测试,将其内容更新到当前时间。

问题是:“启用 ASP.NET AJAX 的网站”有哪些“ASP.NET 网站”不会阻止我添加 AJAX 控件?

【问题讨论】:

  • 您使用的是什么 .Net 版本,我认为它是从 3.5 开始内置的,否则您必须安装它? microsoft.com/downloads/en/…
  • 您使用的是 sourcesafe/sourcegear 吗?我要问的原因是,这看起来是那些边缘错误之一,并且在某个地方出了点问题,但我在谷歌上发现了指向这一点的案例:-(
  • 使用 .net 3.5 - 在 3.5 之前有很多安全策略问题。可以在 jQuery 中使用 Ajax 并调用 .net 2.x 的普通 aspx 页面并获取参数。
  • 我正在使用 SVN,但我正在本地处理这个项目(作为测试)。

标签: c# .net asp.net


【解决方案1】:

您是否拥有多个版本的 AJAX 库。通常,您在配置文件中设置使用的版本与您在页面上使用的控件之间的版本可能不同。这是我要检查的第一个地方。

您还需要确保拥有正确版本的 AJAX 和控件库。这可能是您下载了旧的控制工具包并使用了最新的 .NET 框架,因为 .NET 4.0 中包含了很多 AJAX 功能。或者它可以下载更新的位并尝试在 2.0 中使用它们。

【讨论】:

  • 我可能安装了多个版本。你能帮我找出这个冲突在哪里吗?如何在不删除较早版本的情况下删除一个版本?在安装 1.0(旧)版本之前,我已经安装了一个较新的版本,可能就是这样。
  • 发现冲突的规范是检查引用(通常在web.config文件中,但可以是逐页的@Ref标签)并将版本号与版本号进行比较控制工具包(可以在 Windows 资源管理器中检查 DLL 的版本)。如果它们不相同,那么您需要更新引用以使事物匹配。最好的办法是确保您安装了最新且唯一的最新版本,然后确保引用(配置和/或页面)中的 refs 为 4.0.xxx。
  • 谢谢!最后,我彻底阅读了工作测试的 web.config 以找到引用 System.Web.Extensions 和 AJAX 的任何内容,然后将其复制到我的未启用 ajax 的文件中,并且它已经工作了。再次感谢您!
【解决方案2】:

据我所知(我使用 AjaxControlToolkit 已经有一段时间了)当您尝试从后面的代码修改响应流时会发生此错误(即:执行 Response.Write(); 或 Response.End( ); 等等等等...

如果您的 AsyncPostback 触发器正在调用的方法正在执行任何类型的响应流修改,则将其注释掉并作为“概念证明”再次尝试。

希望这能让你走上正确的道路。

戴夫

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-02
    相关资源
    最近更新 更多