Web应用的层次化结构设计

ASP.NET开发中,经常需要将Web应用组织成层次化结构,以便于管理和维护。本文将介绍如何实现这一目标,并在Visual Studio.NET (VS.NET) 2003中进行操作。请注意,虽然本文介绍的方法尚未在实际的软件项目中使用,但作者即将开始使用,并期待读者的反馈和建议。

创建Web项目的层次结构

首先,需要创建Web项目的层次结构,并在构建阶段将所有程序集复制到根目录的bin文件夹中。以下是创建项目结构的步骤:

  1. 创建Web项目的根目录(例如:C:\Projects\RootWeb)。
  2. IIS管理控制台(MMC)中创建相应的虚拟目录。例如,在"Default Web Site"中创建一个名为RootWeb的虚拟目录。
  3. 配置FrontPage服务器扩展(FPSE)。在Windows 2000中,需要关闭并重新打开IISMMC,然后右键点击RootWeb虚拟目录,在"All Tasks"中选择"Configure Server Extension"。

在VS.NET中创建项目

接下来,在VS.NET中创建项目:

  1. 在C:\Projects\RootWeb路径下创建一个空白解决方案,命名为RootWeb。
  2. 在该解决方案下创建一个新的ASP.NETWeb应用程序项目,位置设置为http://localhost/RootWeb。
  3. 再次创建一个新的ASP.NETWeb应用程序项目,位置设置为http://localhost/RootWeb/SubWeb1。

默认情况下,Web项目会创建FrontPage访问权限。需要将其转换为使用文件共享,以便轻松使用版本控制系统(VSS)集成。转换后,只需使用"Add Project to Source Control"功能即可。

使用后构建事件

在C#项目中,可以使用后构建事件。虽然VS.NET IDE不允许为Web应用程序指定后构建脚本,但可以在.csproj文件中设置。以下是如何操作的步骤:

  1. 打开.csproj文件(例如:C:\Projects\RootWeb\SubWeb1\SubWeb1.csproj)。
  2. 指定PostBuildEvent的值。例如,将生成的程序集复制到根目录的bin文件夹中,可以使用以下命令:
PostBuildEvent = 'move "$(TargetDir)$(TargetFileName)" C:\Projects\RootWeb\bin\'

注意,如果TargetDir包含空格,复制命令将会失败。为了解决这个问题,可以将路径用双引号括起来,并将.csproj文件中的属性分隔符从双引号改为单引号。

删除不必要的文件

在子项目中,需要删除global.asax*和web.config文件,并从.csproj文件中删除相关条目。

修改HTML页面布局

如果想改变DefaultHTMLPageLayout为flow以提高HTML兼容性,可以在IDE中进行设置。对于自动创建的WebForm1.aspx,可以删除MS_POSITIONING="GridLayout"字符串,或者在IDE中进行修改。

编写有用的内容

在RootWeb的WebForm1.aspx中写入一些有用的内容(例如:"Hello World from the Root web")。同样,在RootWeb\Sub1的WebForm1.aspx中也写入一些有用的内容(例如:"Hello World from the sub web 1")。

构建和测试

现在,可以构建解决方案并在http://localhost/RootWeb/webform1.aspx和http://localhost/RootWeb/SubWeb1/webform1.aspx进行测试。如果在根Web上创建了一个ascx文件,可以通过拖放的方式在任何子Web中使用它。此外,所有子Web文件夹中的Web应用程序上下文都是相同的。

改进

虽然按照上述步骤操作可能会有些繁琐,但可以定义一个新的企业模板来简化这个过程。在MSDN上有一个教程介绍了如何定义新的模板。如果目标目录能够自动参数化到根目录路径,那就更好了。

命名空间和目录结构

namespace RootWeb.SubWeb1
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485