正 文

常见的 ASP.NET 2.0 转换问题和解决方案


www.7dspace.com  更新日期:2005-10-4 8:19:58  七度空间


代码分离文件中的附加类型

在 ASP.NET 1.x 中,通过将类型(例如,结构、枚举、界面和模块等)存储在一个用于 Web 窗体或用户控件的代码分离文件中,可以在不同的页面之间共享这些类型。

在 ASP.NET 2.0 中,由于 Web 窗体和用户控件被编译到各自的程序集中,因此此模式被破坏,无法再发现附加类型。

如何修复

当转换向导转换完应用程序之后,只将任一非私有附加类型移到它在 App_Code 目录下专用的独立代码文件中。您还需要将该类型的访问修改符更改为 public,因为该类型必须在多个程序集中工作。共享类型将自动编译,并且可通过 Web 应用程序发现。

请注意,在 Visual Studio 2005 的最终版本中,转换向导将自动执行此操作。生成的独立文件将位于 Migrated 子目录下,该文件的文件名将基于在其中找到附加类型的文件以及所找到的类型的名称。您可以根据需要随意重命名此文件,只需将其保留在 App_Code 目录下即可。

同一位置处的多个 Web 项目

如果在同一解决方案中有多个 Web 项目共享同一个目录位置,则 Visual Studio 2005 将把在该位置找到的所有文件都视为单个 Web 应用程序的一部分。尽管向导会自动将所有程序集引用移到 web.config 文件中,您仍然可能遇到下列问题:

由项目合并导致的命名冲突。

如果一个 Web 项目引用另一个 Web 项目,并且两个项目合并到一起,则会产生引用问题。

如何修复

在转换项目之前将它们分隔开,即,将它们放在各自单独的目录位置。

模糊引用和命名冲突

.NET Framework 2.0 添加了许多新的命名空间和类。其中一些有可能导致与 ASP.NET 1.x 应用程序的冲突。例如,新的个性化功能引入了名为 Profile、Membership 和 MembershipUser 的类。Profile 名称对于要跟踪用户信息的开发人员来说是特别常用的。因此,如果应用程序中具有 Profile 类,并且您尝试使用任一新增个性化功能,则可能会遇到关于模糊类引用的编译器警告。

如何修复

针对命名冲突进行事先计划是相当困难的。您需要快速浏览新的 ASP.NET 类。如果看到可能会与应用程序中的某些内容冲突的任何名称,则需要考虑使用明确命名。例如,使用 System.Web.Security.Membership 而不导入/使用 System.Web.Security,然后使用 Membership 类。

设计视图问题

Visual Studio 2005 中内置的新增 Visual Web Designer 能够比 Visual Studio .NET 2003 得到更加严格的 HTML。如果 .aspx 页面包含不匹配的标记或格式不佳的 HTML,那么设计器将不允许您切换到 Visual Studio 2005 内的设计视图,而只能切换到代码视图,直到修复了问题为止。发生此问题是由于 Visual Studio 2005 内置的新增源代码保存和验证函数。

如何修复

避免此问题的唯一方法就是确保 .aspx 页面中的标记格式正确。如果在转换后从代码视图切换到设计视图时遇到了问题,那么几乎可以肯定是标记错误问题。

多次调用事件处理程序

由于转换向导合并代码分离文件与 .aspx 页面的方式,您可能会遇到自动调用的事件被两次调用(例如,页面加载)的情况。如果事件绑定代码不位于代码分离文件的 InitializeComponent 方法中,则会发生这种情况。转换向导只有在绑定位于 InitalizeComponent 方法中的情况下才能够删除重复的绑定。

您可能很难注意到这个错误,因为在大多数情况下,第二次事件激发不会带来危害。但是,如果您确实发现某个自动调用事件多次发生,则应检查转换后的代码分离文件,以查看处理程序是否两次被绑定到事件。如果是这样,则必须手动删除第二个绑定。

如何修复

通过浏览现有代码,并确保所有事件绑定都包含在代码分离文件的 InitialzeComponent 函数中,或者通过在页面中设置 AutoEventWireUp=False,即可完全避免此问题。

错误列表错误错误: 无法分析文件名

当转换报告中通知您不能分析文件时,您可能会看到这条更加模糊的错误消息。产生这种错误的实际原因有很多,其中包括:

页面格式不正确。如果项目中含有格式不正确的 .aspx 页面,则向导可能无法读取该页面,也无法将其识别为 .aspx 页面。

未找到“Codebehind”属性或“src”属性。如果 .aspx 页面不包含这两个属性中的任何一个,则向导将找不到匹配的代码分离文件,并且不能转换该页面。如果普通的 HTML 页面发生这种情况,则可以将其忽略。如果应用程序包含使用 .aspx 扩展名的纯 HTML 页面,那么您会经常遇到此错误。

未找到代码分离文件。如果 .aspx 页面应含有代码分离文件,但在项目目录中找不到该文件,则可能会看到此错误。在这种特定情况下,您还会看到另一条错误消息:“未找到代码分离文件的文件名”。这两个错误都与同一个页面相关。第一个错误指示无法处理 .aspx 部分,第二个错误指示未找到代码分离文件。

文件在项目文件(.csproj.vbproj)中列出了,但不在指定的目录下。如果您添加、删除、重命名或移动 ASP.NET 项目文件内容,ASP.NET 项目文件经常会过期。如果您确定列出的文件不应是项目的一部分,则可以忽略此错误。

如何修复

为了避免这些问题,请在开始转换之前确保项目完整,并且项目中列出的所有文件都在指定的目录下。

9页,页码:[1] [2] [3] [4] [5] [6] [7] [8] [9] 

上一篇:Fireworks MX 2004橡皮图章工具组--Fireworks MX 2004 视频教程(11)
下一篇:通过 XML 发布新闻
作者:Michael Bundschuh,Robert McGovern  来源:Microsoft,Infusion Development ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐