gpt4 book ai didi

ASP.NET 1.1 到 4.0 迁移 : events not working

转载 作者:行者123 更新时间:2023-12-03 22:38:02 26 4
gpt4 key购买 nike

我最近开始将 ASP.NET 项目从 .NET 版本 1.1 迁移到 4.0。该系统目前在客户站点上运行并且可以正常工作。
当我通过 VS 向导迁移解决方案时,我没有收到任何错误。
错误是 没有服务器控制事件起作用 View 状态始终为空 .

我试过明确设置 ViewStateMode启用和AutoEventWireup为真。不幸的是,没有任何效果。该项目不是作为 Web 应用程序编写的(转换不能解决问题)。

我还检查了是否所有服务器控件都设置了 ID(它们确实设置了)。

该项目有自己的母版页系统,System.Web.UI.Page 上有一层厚厚的层,可能会破坏很多东西,但到目前为止我还没有找到问题的根源。

是否有任何我应该检查的特定设置(即自 .NET 1.1 以来更改的默认值)或者你能给我一些提示为什么会发生这种情况?

编辑 1:这些是单击链接按钮时发布的值:

CRC =-2134936892& _事件目标 =MPage%24BC%24TestButton& _事件参数 =& _VIEWSTATE =& _事件验证 =%2FwEWAwL%2BraDpAgLB49K8AwKy8rFAt4Axk3NlUEWxrtY%2FRtaexH%2F634CkJe6G9Im5EOPXtVw%3D

编辑 2:我仔细检查了自定义母版页机制,发现它广泛使用了 Server.Transfer(...)跳转到正确页面之前的方法。这是缺少 ViewState 的可能原因吗? (那么奇怪的是,EventTarget 总是保持不变)更重要的是,1.1 和 4.0 之间会不会有任何变化?

最佳答案

你检查了这个链接吗? http://www.asp.net/whitepapers/aspnet4/breaking-changes

在页面的更深处指出,当 FORM的 Action 为空,会发生以下情况:

  • 将表单元素的 action 属性设置为“”的 .aspx 页面发送到浏览器。
  • 该表单被回发到 ASP.NET。
  • 托管 HTTP 模块读取实体主体的某些部分。例如,一个模块读取 Request.Form 或 Request.Params。这会导致 POST 请求的实体主体被读入托管内存。因此,实体主体不再可用于在 IIS 7 或 IIS 7.5 集成模式下运行的任何 native 代码模块。
  • IIS DefaultDocumentModule 对象最终运行并创建对 Default.aspx 文档的子请求。但是,由于实体主体已被一段托管代码读取,因此没有可用于发送给子请求的实体主体。
  • 当 HTTP 管道针对子请求运行时,.aspx 文件的处理程序在处理程序执行阶段运行。
  • 因为没有实体体,所以没有表单变量,也没有 View 状态 ,因此 .aspx 页面处理程序没有可用的信息来确定应该引发什么事件(如果有)。因此,受影响的 .aspx 页面的任何回发事件处理程序都不会运行。
    您可以通过以下方式解决此问题:

  • 编辑:我们在两年前迁移到 3.5 时遇到了类似的问题......我们所做的是使用带有 Web App 项目类型的 VS2005 作为桥梁,所以我们的迁移路径是:
  • 1.1 到 2.0
  • 2.0 到 3.5

  • 这是我们最后的手段,也是在找到这份文件之前。

    关于ASP.NET 1.1 到 4.0 迁移 : events not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11792856/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com