如何修复
避免此问题的唯一方法就是确保 .aspx 页面中的标记格式正确。如果在转换后从代码视图切换到设计视图时遇到了问题,那么几乎可以肯定是标记错误问题。
多次调用事件处理程序
由于转换向导合并代码分离文件与 .aspx 页面的方式,您可能会遇到自动调用的事件被两次调用(例如,页面加载)的情况。如果事件绑定代码不位于代码分离文件的 InitializeComponent 方法中,则会发生这种情况。转换向导只有在绑定位于 InitalizeComponent 方法中的情况下才能够删除重复的绑定。
您可能很难注意到这个错误,因为在大多数情况下,第二次事件激发不会带来危害。但是,如果您确实发现某个自动调用事件多次发生,则应检查转换后的代码分离文件,以查看处理程序是否两次被绑定到事件。如果是这样,则必须手动删除第二个绑定。
如何修复
通过浏览现有代码,并确保所有事件绑定都包含在代码分离文件的 InitialzeComponent 函数中,或者通过在页面中设置 AutoEventWireUp=False,即可完全避免此问题。
错误列表错误“错误: 无法分析文件名”
当转换报告中通知您不能分析文件时,您可能会看到这条更加模糊的错误消息。产生这种错误的实际原因有很多,其中包括:
页面格式不正确。如果项目中含有格式不正确的 .aspx 页面,则向导可能无法读取该页面,也无法将其识别为 .aspx 页面。 | |
未找到“codebehind”属性或“src”属性。如果 .aspx 页面不包含这两个属性中的任何一个,则向导将找不到匹配的代码分离文件,并且不能转换该页面。如果普通的 HTML 页面发生这种情况,则可以将其忽略。如果应用程序包含使用 .aspx 扩展名的纯 HTML 页面,那么您会经常遇到此错误。 | |
未找到代码分离文件。如果 .aspx 页面应含有代码分离文件,但在项目目录中找不到该文件,则可能会看到此错误。在这种特定情况下,您还会看到另一条错误消息:“未找到代码分离文件的文件名”。这两个错误都与同一个页面相关。第一个错误指示无法处理 .aspx 部分,第二个错误指示未找到代码分离文件。 | |
文件在项目文件(.csproj、.vbproj)中列出了,但不在指定的目录下。如果您添加、删除、重命名或移动 ASP.NET 项目文件内容,ASP.NET 项目文件经常会过期。如果您确定列出的文件不应是项目的一部分,则可以忽略此错误。 |
如何修复
为了避免这些问题,请在开始转换之前确保项目完整,并且项目中列出的所有文件都在指定的目录下。
移到 App_Code 目录下的代码分离文件
运行转换向导之后,您可能会发现某些代码分离文件(例如,*.aspx.cs 或 *.ascx.vb)被移到 App_Code 目录下。这表明代码分离文件的内容页面含有格式不正确的 Codebehind 指令,并且没有进行正确设置。也就是说,转换向导不能确定该代码分离文件是否实际绑定到某个特定的 .aspx 页面。
转换向导会自动将所有独立类文件(例如,*.cs 或 *.vb)移到 App_Code 目录下。如果有格式不正确的 Codebehind 指令,那么代码分离文件将被视为独立类文件,并且被移到 App_Code 目录下。
请注意,web 服务文件(例如,*.asmx 和 *.asmx.cs)与普通的内容页面及其代码分离页面不同。Web 服务文件的代码分离页面预计位于 App_Code 目录下,因此如果在此发现一个代码分离页面,它并不是错误。
如何修复
在转换之前,确保在所有内容页面中正确设置了 Codebehind 指令,即可避免此问题。
转换之后,将代码分离文件与相关联的内容页面移到同一目录下,并更正内容页面的 Codefile 指令(在 ASP.NET 2.0 中已重命名),以便指向该代码分离文件。
不再排除以前排除的文件
在 Visual Studio .NET 2003 中,您必须明确决定是否在 Web 项目中包含各个文件。