ASP.NET 3.5教程
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.5 ASP.NET应用程序的组成

一个成功发布的ASP.NET应用程序通常包括以下6个部分。

(1)一个在IIS信息服务器中的虚拟目录。这个虚拟目录被配置为应用程序的根目录。

(2)一个或多个带.aspx或.ascx扩展名的文件。

(3)Web.config应用程序配置文件。

(4)Global.asax全局文件。

(5)保留文件夹,用于系统特定类型的文件。

(6)bin目录,包含发布网站时生成的若干程序集(.dll文件),这些程序集通常是在应用程序中引用的控件、组件或其他代码。应用程序将自动引用此目录的代码所表示的任何类。要求此目录位于Web应用程序的根目录下。

1.5.1 虚拟目录

虚拟目录又称为目录的“别名”,它是以服务器作为根的目录。默认安装时,IIS的Web服务器主目录被设置为C:\Inetpub\wwwroot,该目录对应的URL是http://localhost/。在因特网中向外发布信息或接受信息的应用程序必须放在虚拟目录或其子目录下面。系统将自动在虚拟目录下去寻找相关的文件。

将应用程序放在虚拟目录下,有两种方法。

(1)直接将网站的根目录放在虚拟目录下。例如,应用程序的根目录是“myweb”,直接将它放在虚拟目录下,物理路径为“C:\Inetpub\wwwroot\myweb”。此时对应的URL是“http://localhost/myweb”。

(2)将应用程序目录放到一个物理目录下(例如,D:\myweb),同时建一个虚拟目录指向该物理目录,此时新建的虚拟目录名只是一个别名,并不要求与被指向的物理目录同名。客户只需要通过虚拟目录的URL来访问即可,并不需要知道对应的物理目录在哪里。这样做的好处是一旦应用程序的物理目录有了改变时,只需更改目录映射,无须更改虚拟目录名,客户仍然可以用原URL来访问它们。

1.5.2 网页文件

网页是Web应用程序运行的主体。ASP.NET中的基本网页以aspx作为后缀。除此以外,应用程序中还可以包括以ascx为后缀的用户控件,即以传统的html或asp为后缀的网页。

当服务器打开后缀为htm的网页时,服务器将不经过任何处理就直接送往浏览器。而当服务器打开后缀为aspx的网页时,需先运行服务器端的代码,然后再将结果转换成HTML的代码形式送往浏览器。对于曾经请求过而又没有改变的aspx网页,服务器会直接从缓冲区中取出结果而不需要再次运行。

因此,对于一个即使不包含服务器端代码的HTML网页,也允许使用aspx作为文件的后缀。此时服务器会解读此网页,当它发现其中并不包括服务器端代码时,也会将文本送往浏览器,其他什么事情也不做,其结果只是稍微降低了程序的运行效率。因此尽管允许纯HTML网页使用“.aspx”后缀,但并不提倡这样做。反过来,如果网页中包括有服务器控件或服务器端代码,而仍然采用“.htm”后缀,则将会出现错误。

1.5.3 网站配置文件(Web.config文件)

Web.config是一个基于XML语言的配置文件。该文件的作用是对Web应用程序进行配置,如规定客户的认证方法、基于角色的安全技术的策略、数据绑定的方法、错误显示方式、数据库连接串等。

Web.config并不是网站必备的文件。因为服务器有一个总的配置文件,名为“Machine.config”,默认安装在“C:\windows\Microsoft.NET\ Framework\(版本号)\ CONFIG\”的目录下。这个配置文件已经确定了所有ASP.NET应用程序的基本配置,通常情况下不要去修改这个文件,以免影响其他应用程序的正常运行。

1.5.4 网站全局文件(Global.asax文件)

Global.asax文件也是一个可选的文件,但是一个应用程序最多只能建立一个Global.asax文件,而且必须放在应用程序的根目录下。这是一个全局性的文件,用来处理应用程序级别的事件,放置如Application Start、Application End、Application Error和Session Start、Session End等事件的处理代码。

当应用程序运行的时候,Global.asax的内容被编译到一个继承自HttpApplication类的类中。因此,HttpApplication类中所有的方法、类和对象对于应用程序都是可用的。

CLR监控着Global.asax的变化。如果它察觉到这个文件发生了改变,那么将自动启动一个新的应用程序复本,同时创建一个新的应用程序域。原应用程序域当前正在处理的请求被允许结束,而任何新的请求都交由新应用程序域来处理。当原应用程序域的最后一个请求处理完成时,这个应用程序域即被清除。这有效地保证了应用程序可以重新启动,而不被任何用户察觉。

注意:为防止应用程序用户下载应用程序而看到源代码,ASP.NET默认配置为阻止用户查看Global.asax的内容。如果有人在浏览器中输入URL“http://localhost/progaspnet/Global. asax”,则将会收到一个403(禁止访问)的错误信息。

1.5.5 保留文件夹

ASP.NET使用应用程序根目录下的许多特殊目录来维护应用程序的内容和数据。ASP.NET 3.5在ASP.NET 1.x中已存在的Bin目录的基础上又引进了另外7个受保护的目录,这些目录也不是一定要存在的,每个目录需要开发者在需要时手动创建或通过VS2008创建。

最常用的3个保留目录如下。

(1)App Code:包含页使用的类的源文件(.cs或.vb)。所有的文件必须使用相同的语言。

(2)App Data:包含应用程序数据文件,包括MDF文件、XML文件和其他数据存储文件。ASP.NET 3.5使用此目录来存储应用程序的本地数据库。

(3)App Themes:包含应用程序支持的主题和外观的定义,也是保留目录中唯一一个可以通过HTTP请求访问的目录。