网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

常见的ASP.NET2.0转换问题和解决方案

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
ASP.NET 1.x 中,使用内置的向导或 xsd.exe 命令行工具来生成类型化 DataSet 对象。生成的代理对象存储在顶层目录下。而在 ASP.NET 2.0 中,这些 DataSet 对象以不同的方式生成和存储。

对应用程序的更改

转换向导将在下列几个方面对应用程序进行更改:

将 .xsd 文件(DataSet 描述符)移到 App_Code 目录下。运行时将自动根据此文件生成类型化数据集。

删除旧的代理文件。

返回页首返回页首

源代码控制中的 Web 项目

转换向导假定从 ASP.NET 1.x 到 ASP.NET 2.0 的转换是一项非常重大的更改,以致于您需要对开发过程进行分叉。基于这种假定,转换向导将会在开始转换之前检出整个应用程序,然后从源代码控制树删除生成的代码。完成转换后,您必须将项目添加回源代码控制系统。

对应用程序的更改

如果项目位于与 Visual Studio 2005 集成的源代码控制系统中,则转换向导将执行下列操作:

检出与当前项目相关联的每个文件。

执行转换。

从源代码控制删除生成的代码。请注意,microsoft FrontPage Web 应用程序将保留在源代码控制中(FrontPage 工作方式结果)。

转换后,您需要将站点添加回源代码控制。

返回页首返回页首

常见转换问题

尽管 ASP.NET 2.0 可以处理在 ASP.NET 1.x 中开发的代码,但是您仍然可能会遇到一个或多个常见转换问题。在本部分中,我们将着眼于几个最常见的问题。

代码分离 (CB-CB) 破坏的引用

注意:CB 是表示用于 Web 窗体或用户控件的代码分离文件(*.aspx 或 *.ascx)的缩写词。

新的 ASP.NET 2.0 编译模式使用通常在服务器上动态编译的多个程序集。此模式改善了 Web 站点的性能和可更新性。

但是如果 ASP.NET 1.x 代码分离文件引用另一个代码分离文件,那么引用将被破坏,因为引用的代码分离文件将不再位于同一个程序集中。

下面列出了可能导致这种问题的常见情况:

使用 LoadControl() 并将结果转换到另一个用户控件,例如
UserControl1 c1 = (UserControl1)LoadControl("~/UserControl1.ascx");

创建 Web 窗体类的实例,例如
WebForm1 w1 = new WebForm1();
其中 WebForm1 是在用于 Web 窗体的代码分离文件中定义的类。

如何修复

要解决此问题,需要更改应用程序以使其能够找到引用。既然这是一个 CB-CB 破坏的引用,因此解决问题的最简单的方法就是向进行引用的 Web 窗体或用户控件添加一个引用指令。此方法将告知编译器要链接到的程序集。

假定您处于以下情况:

原 ASP.NET 1.x 代码
文件(位于 WebAppRootFolder 下)代码

Page1.ascx

- Page1.ascx.cs

Control1 c = (Control1)LoadControl("~/Control1.ascx");

Control1.ascx

- Control1.ascx.cs

更改代码以使用引用指令:

ASP.NET 2.0 版本
文件(位于 WebAppRootFolder 下)代码

Page1.ascx

<%@ Reference Control="~/Control1.ascx" %>

- Page1.ascx.cs

Control1 c = (Control1)LoadControl("~/Control1.ascx");

Control1.ascx

- Control1.ascx.cs

通过使用该引用指令,明确地告知编译器查找要使用的 Web 窗体或控件的位置。请注意,在 Visual Studio 2005 的最终版本中,转换向导将自动执行此操作。

独立类文件 (SA?"CB) 破坏的引用

注意:SA 是表示独立类文件的缩写词。

如果某个独立类文件引用了代码分离文件中的代码,则您可能会遇到另一种破坏的引用。这种引用与 CB-CB 破坏的引用相似,只不过 App_Code 目录下的某个独立类文件试图引用单独的页面程序集。同样,会导致这种问题的常见情况包括使用 LoadControl() 调用或创建 CB 类的实例。

如何修复

修复 SA-CB 破坏的引用要复杂的多。既然问题发生在 SA 文件中,您就不能使用引用指令来查找该引用。而且,转换之后,SA 文件将移到 App_Code 目录下,因此您只能在 App_Code 程序集被编译后访问该程序集。

解决方案是在 App_Code 目录

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号