第 1 章 导 论 本章介绍Web应用程序的工作原理及常用开发技术,ASP.NET的发展历程、与.NET Framework的关系、功能、特点、运行环境和开发工具,创建和开发ASP.NET应用程序的工作流程和注意事项等内容。通过本章的学习,应完成以下学习目标: 理解并掌握网页的工作原理 了解Web应用程序的常用开发技术 了解ASP.NET与.NET Framework的关系 了解ASP.NET的功能和特点 学会搭建ASP.NET应用程序的运行环境 熟悉Visual Studio 2005的ASP.NET开发环境 学会创建一个简单的ASP.NET应用程序 了解开发ASP.NET应用程序开发过程中的注意事项 1.1 Web应用程序概述 应用程序主要有两种模式:C/S(客户机/服务器)模式和B/S(浏览器/服务器)模式。C/S模式主要用于Windows应用程序的开发,这类应用程序常见的如Microsoft的Office办公套件;B/S模式则主要用于Web应用程序的开发,这类应用程序基于网络,具有与网页浏览者进行交互的功能,如聊天室、留言板、电子商务等。 1.1.1 Web应用程序的工作原理 1. Web服务器与客户端 一般而言,凡是提供服务的一方即称为服务器端,而接受服务的一方则称为客户端。例如浏览新浪首页的时候,新浪首页所在的服务器就称为服务器端,而访问者的计算机称为客户端。但服务器端和客户端也并不绝对,例如提供服务的服务器如果接受了别的服务器端的服务,它也就成了为其提供服务的服务器端的客户端,对于客户端则同样如此。我们在调试自己的Web应用程序时,通常是将自己的计算机既当服务器端,又当客户端来使用。 Internet上的用户通过在浏览器地址栏输入Web服务器的地址来访问Web服务器上的资源。我们做的网站,如果希望网上的用户能够访问,也必须将网站文件放在Web服务器上。放在自己机器上,Internet上的其他人是访问不到的(除非您的机器本身就是一台Web服务器)。 网站发布到Web服务器上以后,Internet上的用户通过网站的域名来访问网站。我们知道,IP可以用于标记一台主机的位置,但用户不可能通过IP地址来访问网页,因为这太难以记忆了。而域名就相对容易记忆得多,当Internet上的用户在浏览器地址栏输入域名后,会通过服务器对该域名进行解析,自动找到该IP地址所在的主机,从而访问该Web服务器。 2. 交互原理 要查看某个网页,Internet上的用户必须首先打开浏览器,在地址栏中输入该网页的URL地址,然后由浏览器向指定地址的Web服务器发出请求,这称为客户端请求。客户端请求是包含一连串客户端信息的字符串,包括诸如客户端请求类型、浏览器类型、操作系统类型、客户端的IP地址等信息。 当Web服务器接收到这些信息后,就会根据客户请求的文件类型作相应的处理:如果用户请求的页面是一个静态页,那么服务器是不对用户请求的数据作任何处理的,它将直接把用户所请求页面的HTML发给客户机;如果用户请求的是一个动态页,那么服务器会执行动态页中的动态程序代码片段(如ASP、JSP、PHP等),然后将动态程序生成好的HTML代码发送给客户端。 当客户端收到这些HTML信息后,会把它们存储在客户端本地计算机的一个临时文件夹中(这种存储过程称之为缓冲或缓存),最后将临时文件夹中的 HTML装入到客户的浏览器中,由浏览器将HTML代码解释成浏览者所能看到的网页信息。这就是整个客户机与Web服务器之间请求与应答的交互过程。 3. 选择静态网页还是动态网页 所谓静态网页,是指由网页设计者最初设计网页时,网页中的所有元素(如文字内容、表格和图像等等)都由设计者设计好了的网页。并且这个网页发布到服务器上后,不能由用户的相关操作(如表单提交、单击链接),来动态地改变网页的显示形式(包括版式和内容)。如果要更改网页中的内容,则必须由设计者重新对该页进行设计。 所谓动态网页。是指在用户浏览网页的时候,可以通过相关的用户事件,来动态地改变网页中的内容甚至版式的一种网页。例如网页中显示用户的浏览次数,即是一个典型的动态网页,它随浏览者访问该页的次数而显示不同的数字。 静态网页最大的缺点是没有交互性,不能够实现浏览者与网站之间的信息交互。另外,由于它是直接把HTML代码发送给客户机的,因此,没有安全性可言。在现今的信息网络中,没有交互性的网页已经形同虚设,而更多的网站都采用了各种各样的动态技术。但是,不容质疑,静态网页比任何一种动态网页的速度都要快,因为它在服务器端不需要进行任何处理,由服务器直接将HTML发给客户机。 而动态网页需要在服务器中对数据进行处理,将处理好后生成的HTML代码发给客户机,所以它一般要比静态网页的速度慢,再者,由于动态网页的代码是在服务器端执行的,而客户机看到的始终是动态程序生成后的HTML源代码,所以它有了数据的安全性。 由此,大家可能觉得动态页都要优于静态网页,那么直接学习动态网页就好了,而这样的想法却是大错!要知道,任何一种动态网页都是建立在HTML的基础上的,动态网页的实质就是将动态的代码嵌入到HTML中,来实现各种交互性的。任何一种动态网页执行后,都将生成HTML代码,并最终将HTML发给客户机。所以,可以说一个不会HTML的人,是不可能学好动态网页的,它是所有动态语言的基础。 1.1.2 常用的Web应用程序开发技术 早期的动态网页主要采用CGI(Common Gateway Interface)技术,即公用网关接口技术,虽然CGI技术已经发展成熟并且功能强大,但由于编程困难、效率低下、维护困难,已经逐渐被新兴的技术所取代,这些新兴技术主要有ASP、PHP、JSP、ASP.NET,采用这些动态网页技术开发的网页文档后缀名通常为.asp、.php、.jsp、.aspx。 1. PHP(Hypertext Preprocessor) PHP是Rasmus Lerdorf于1994年提出的,最初仅提供留言薄、计数器等简单功能,后来其解析器被不断修改和完善(当前最新版本为PHP5),并逐步成为当今Internet上最流行的Web开发技术之一。PHP大量借鉴了C、Java和Perl语言的语法,将脚本语言嵌入到HTML文档中,代码在服务器端执行,转化为标准的HTML文件后发送到客户端并呈现。 PHP程序可以运行在Unix、Linux和Windows操作系统下,PHP、MySQL数据库、Apache Web服务器是当前开发Web应用程序的一个完美组合。但PHP缺乏大公司的支持,其运行环境配置起来比较复杂,并且由于商业原因,采用PHP开发的Web应用程序存在较多的安全隐患。 2. JSP(Java Server Pages) JSP是由Sun Microsystem公司于1999年6月推出的,基于Java Servlet和整个Java体系的Web开发技术。JSP其实就是将Java程序片段和JSP标记嵌入到普通的HTML文档中,当用户访问一个JSP网页时,就执行其中的程序片段,然后将标准的HTML文档返回给客户端并呈现。 JSP的执行效率很高,当用户第一次请求JSP文件时,该文件被编译成Servlet并由Java虚拟机执行,用户以后再请求该JSP文件时便可以不用编译而直接运行了。此外,JSP可以运行在几乎所有的服务器系统上,包括Windows NT、Windows 2000、Unix、Linux等,但JSP的运行环境配置起来比较复杂,并且学习起来比较困难,不是十分适合初学者使用。 3. ASP(Active Server Pages) ASP是由Microsoft开发的一种类似HTML(超文本标识语言)、Script(脚本)与CGI(公用网关接口)的结合体,它没有提供自己专门的编程语言,而是在普通的HTML文档中嵌入VBScript或JavaScript脚本,当客户请求一个ASP文件时,服务器端就运行ASP文件中的脚本代码,并转化为标准的HTML文件,最后发送到客户端并呈现。ASP当前的最新版本是3.0。 ASP的最大优点是简单、易学,且有Microsoft的强大支持。但ASP存在很多缺陷,具体表现在以下几个方面。 ● 编码量大:即使是做一些非常简单的事情,例如显示一个数据库中的数据页,也必须手工编写大量的代码,程序员工作量太大。 ● 程序可读性和维护性差:ASP将应用程序代码嵌入到HTML页面中,使得应用程序代码和HTML代码混合在一起,造成程序的可读性和维护性较差; ● 性能不理想:即使是相同的HTTP请求,ASP也要重新运行相同的代码,造成程序的性能低下。 此外,ASP不能跨平台运行,一般只能运行在Windows系列的操作系统上。为此,Microsoft在ASP 3.0的基础上推出了ASP.NET技术。 4. ASP.NET 与ASP相比,ASP.NET不是简单的升级,而是进行了全面的革新,是一种全新的开发架构,1.2节将对其做全面介绍。 1.2 ASP.NET概述 ASP.NET是Microsoft所推出的一个全新的Web开发架构,可构建能在任意浏览器(Internet Explorer、Netscape Navigator、Firefox等)上显示的Web应用程序。 1.2.1 .NET Framework与ASP.NET Microsoft所极力打造和推广的.NET战略主要是为了解决互联网中的“信息孤岛”问题,打破不同的上网设备、操作系统、网站,以及各大机构和工业界的网络障碍,解决网站之间的协同合作,使网站之间形成自动交流,从而最大限度地共享网络中的各种资源。 作为第一步,Microsoft推出了Visual Studio .NET,它是一个使用Visual Basic.NET(简称VB.NET)、C#、C++.NET等语言开发应用程序的总框架,包括各种开发工具、支持组件、运行环境、示例文档等。.NET Framework主要由公共语言运行库(CRL,Common Language Runtime),基础类库(Base Class Library),ASP.NET、VB.NET、C#等语言运行库组成,如图1-1所示(显示的是最新的.NET Framework 3.0)。使用ASP.NET开发Web应用程序,实际上就是使用.NET Framework的基础类库和Web开发构件来编写应用程序。 图1-1 .NET Framework与ASP.NET的关系 提示:Visual Studio 2005是Visual Studio .NET的升级版本,集成的是.NET Framework 2.0。.NET Framework 3.0并没有对.NET Framework 2.0做太大改进,而是引入了4种基本的新技术:Windows描述基础(WPF)、Windows通信基础(WCF)、Windows工作流基础(WWF)和Windows CardSpace(WCS)。 1.2.2 ASP.NET应用程序的执行过程 ASP.NET使用IIS(Internet Information Server)来传送内容,以响应HTTP请求。图1-2说明了一个典型的Web请求过程,客户机向服务器请求浏览一个Web页,例如default.aspx(所有的ASP.NET Web页扩展名均为aspx),ASP.NET运行库开始工作,对该Web页第一次请求时会首先启动ASP.NET分析器,编译器将default.aspx文件和与此相关的C#文件一起编译,并创建一个程序集。该程序集包含一个Page类,通过该类将HTML代码返回给客户端,之后该类会被删除,但该程序集会被保留,以用于日后的请求。最后,JIT编辑器将程序集编译成机器码并执行。 图1-2 ASP.NET应用程序的执行过程 1.2.3 ASP.NET的功能和特点 作为新一代的Web开发架构,开发人员可以在ASP.NET下采用VB.NET、C#等其他.NET语言来开发Web应用程序,相对于ASP,ASP.NET具有以下显著优势。 ● 效率增强:ASP.NET应用程序可以在Visual Studio 2005中开发,具有所见即所得、控件拖放和自动部署等特性,从而极大提高开发效率。ASP采用解释执行的方式,用户每访问一次页面,就需要从头到尾解析一遍,效率十分低下,而ASP.NET借鉴了PHP,采用先编译后运行的方式,用户第一次访问页面时进行编译,以后再访问时就直接运行,从而极大提高了执行效率。 ● 程序可读性好、易于维护:在ASP中,ASP代码和HTML标记是混合在一起的,程序的可读性较差,维护起来也很麻烦。而ASP.NET将程序代码和HTML标记分开,使得程序结构十分清晰。此外,在ASP中,如果要使用第三方组件,就必须在服务器端注册该组件,而在ASP.NET中,可以直接向目标服务器复制组件。 ● 一致性和个性化:在Web设计过程中,一方面希望整个站点具有统一的外观,但又希望在色彩、字体大小和其他特性上为用户提供定制站点的服务。ASP.NET 2.0提供了MasterPage控件,使得一个站点在标题、菜单和链接的布局上保持一致,在这种一致范围内,设计人员可以添加控件,设计富于个性化的用户体验。 ● 提供Web窗体的关系式程序模型。Web窗体中包含与事务处理逻辑区分开的表示逻辑和代码文件,开发人员可以在Web窗体设计器中通过拖拉各种UI控件来设计用户界面,系统将自动生成所有代码,同时也可以在代码编辑器中使用任何一种.NET语言来编写代码。ASP.NET Web窗体会在Web服务器上编译和缓存所有代码,有效提升性能。 ● 提供支持服务器端事件的服务器(Server)控件,但呈现为HTML,允许在任何支持HTML的浏览器上运行,此外,Microsoft还扩展了许多HTML控件,使得开发人员可以在代码中自由地操作它们。 ● 登录、安全和角色:许多Web站点都需要登录系统,虽然它实现起来并不复杂,但很少有程序员能够开发一个符合安全要求的登录系统。使用ASP.NET 2.0提供的登录控件,设计人员可以轻松创建站点的登录系统,且具有很高的安全性,可为不同用户指定角色、权限等。 ● 提供强大的数据控件来显示、编辑和处理来自一个数据库中的数据。 ● 为了缓存客户端状态信息,允许在客户端上使用Cookie、ASP.NET State服务或一个SQL Server数据库,允许通过代码对缓存进行编程。 1.3 建立运行环境 要正常运行ASP.NET应用程序,服务器端必须安装如下软件。 ● 操作系统:Windows 2000 Professional/Windows 2000 Server/Windows Advance Server/Windows Server 2003/Windows XP Professional或更高版本,对于Windows 2000系列则需要安装Service Pack 2.0,建议读者使用Windows Server 2003。 ● Web服务器:IIS 5.5或更高版本。 ● .NET Framework。 ● MDAC(Microsoft数据访问组件)2.7。 对于客户端而言,只要是普通的浏览器即可,但Internet Explorer版本必须在5.0以上,推荐使用7.0。 对于运行ASP.NET应用程序时的硬件而言,当前主流的PC机均可满足要求。 由于读者在开发ASP.NET应用程序时,通常是先在自己的计算机上编写并调试好后,再部署到Web服务器上的,这样自己的计算机就既是服务器,又是客户端,因而必须同时安装服务器端和客户端必需的软件。 1.3.1 安装IIS IIS是由Microsoft开发、以Windows操作系统为平台的Web服务器软件,对于Windows 2000或更高版本的Windows NT版本,IIS已经是内建的服务,因此不需要另外配置。对于Windows XP或Windows 2000专业版,则必须手动安装并配置IIS服务,否则将无法测试和运行ASP.NET应用程序。要检查系统是否已配置IIS服务,方法是查找C:\Inetpub文件夹,如果不存在,则需要及时安装。下面以Windows XP版本为例,介绍一下IIS的安装与设置方法。 例1-1 安装并测试IIS服务。 在计算机光驱中放入Windows XP安装盘,在任务栏执行【开始】|【设置】|【控制面板】命令,打开【控制窗口】面板。 双击【添加或删除程序】图标,在打开的对话框中单击【添加/删除Windows组件】按钮,在打开的【Windows组件向导】对话框中,选中【Internet信息服务】复选框,单击【下一步】按钮,开始安装IIS,如图1-3所示。 图1-3 安装IIS信息服务软件 IIS安装完成后,需要对其进行测试,判断是否正确安装。打开浏览器,在地址栏输入http://localhost,如果安装成功无误,将会同时打开两个窗口,如图1-4所示。 IIS本身提供FTP、发送电子邮件、网页浏览等服务。当利用IIS创建网站时,所有网页都必须存放在“网站”这个特定目录中,IIS 会根据指定的网址对应路径,将其中子文件或子目录对应到计算机上存储网页文件的真正位置。在控制面板中双击【管理工具】图标,打开【管理工具】窗口,双击【Internet信息服务】图标,打开【Internet信息服务】窗口,如图1-5所示。 图1-4 测试IIS 图1-5 浏览IIS目录窗口 1.3.2 设置IIS 打开【Internet信息服务】窗口,展开【网站】节点,右击【默认网站】节点,在弹出的快捷菜单中单击【属性】命令,打开该【默认网站属性】对话框。 1. 【网站】选项卡 在这里可以设置网站的IP地址、端口和连接超时时间等参数,如图1-6所示。 2. 【主目录】选项卡 如图1-7所示,本地路径代表网站的实际物理路径,例如站点保存在C:\MyWeb,就需要将【本地路径】设置为C:\MyWeb。在该选项卡中,还可以对站点的访问进行权限设置,只需选中对应的复选框即可。但注意一定要禁用【目录浏览】复选框,否则就只能通过Web浏览整个网站的目录结构了。 图1-6 【网站】选项卡 3. 【文档】选项卡 如图1-8所示,系统默认启用【启用默认文档】。默认文档就是在访问站点时首先打开的文档,例如某个网站http://www.a.com,在浏览器地址栏输入该网址时,将打开该网站的某个默认网页默认文档http://www.a.com/defaults.aspx。默认文档是有次序的,排在前面的文档有优先权。 图1-7 【主目录】选项卡 图1-8 【文档】选项卡 4. 【目录安全性】选项卡 该选项卡用于设置身份控制,单击【匿名访问和身份验证控制】选项区域的【编辑】按钮,打开【身份验证方法】对话框,如图1-9所示。 图1-9 设置身份控制 网站的访问方式分为两种:匿名访问和认证访问。在匿名访问模式下访问网站时,不需要用户名和密码。网站默认启用匿名访问方式,如果禁用【匿名访问】复选框,访问网站就需要用户名和密码了。对于内部网站,可以使用集成Windows身份验证方式,网站能通过Windows账户来验证用户,也可以直接在文件夹的权限中指定用户。 IIS的设置决定了整个网站的性能和安全性,如果用户对这些设置不是很熟悉,建议采用系统的默认设置。 1.3.3 配置虚拟目录 在设置IIS时,网站的实际路径是由【本地路径】指定的,这样做就有几个问题,网站的二级路径必须是主目录的名字,整个网站必须存放在一个位置。例如,网站的网址为http://www.myweb.com,网站的留言系统为http://www.myweb.com/liuyan,网站的新闻发布系统为http://www.myweb.com/news,假设网站指向的目录为C:\myweb,那么留言系统只能为C:\myweb\liuyan,新闻发布系统只能为C:\myweb\news。如果系统十分复杂,设计者需要将几个系统分布在不同的磁盘中,或者留言系统和新闻发布系统使用不同的验证和设置模式时,该如何设置呢? 可以使用虚拟目录解决上述问题,虚拟目录允许某个目录拥有自己的配置。例如,可以在www.myweb.com下建立一个liuyan虚拟目录,而将这个目录的实际位置指向D:\liulan,设置匿名用户访问模式。再在www.myweb.com下建立一个news虚拟目录,使用Windows集成验证模式。 要设置虚拟目录,可打开【IIS信息服务】窗口,右击要添加虚拟目录的站点,在弹出的快捷菜单中选择【新建】|【虚拟目录】命令,打开虚拟目录创建向导,如图1-10所示。【别名】就是虚拟目录的名字,例如,如果网站网址为http://www.myweb.com,则输入liuyan,那么完整地址就是http://www.myweb.com/liuyan。 单击【下一步】按钮,设置目录路径,这是指保存实际文件的物理路径,如图1-11所示。单击【下一步】按钮,设置权限。单击【下一步】按钮,即可完成虚拟目录的创建。 图1-10 设置别名 图1-11 设置目录路径 1.3.4 安装.NET Framework 读者可到http://www.microsoft.com/downloads进行下载,目前版本为2.0,分为.NET Framework可再发行组件包和.NET Framework SDK两个文件。下载完毕后,双击安装文件,在安装向导提示下采用默认设置进行安装即可。安装完毕后,执行【开始】|【所有程序】|【Microsoft .NET Framework SDK】命令,可查看相关资料。 关于MDAC 2.7和Internet Explorer,到Microsoft的网站下载进行安装即可,这里不再赘述。 1.4 ASP.NET的开发工具 虽然使用记事本、文本编辑器等工具就可以开发ASP.NET应用程序,但这会使开发人员过分专注于ASP.NET语句,且代码量很大。另外,使用EditPlus等工具也可以编写ASP.NET应用程序。本书使用的开发工具是Visual Web Developer,它内置在Visual Studio 2005中,Visual Studio 2005是一个强大的集成开发环境,可以实现所见即所得的编辑,并可以实现拖放控件、自动部署、自动分离程序代码和HTML代码的功能。此外,Visual Studio 2005内置了.NET Framework SDK。 1.5 创建一个简单的ASP.NET应用程序 在开始下面的学习之前,读者需要确保计算机上安装了Visual Studio 2005(或Visual Web Developer)、SQL Express、示例数据库和示例站点,具体请参见附录A。 1.5.1 创建和编辑Web站点 启动Visual Studio 2005后,选择【文件】|【新建】|【网站】命令,打开【新建网站】对话框,在【模板】下选择【ASP.NET网站】选项,在【位置】下拉列表框中选择【文件系统】选项,将站点命名为MyWeb,将【语言】设置为Visual C#,如图1-12所示。 图1-12 创建Web站点 创建Web站点时,必须指定站点的构建和运行环境。Visual Studio 2005可以在以下位置创建Web站点: ● 本地IIS Web服务器上。 ● 本地磁盘上,它配置为使用内置的Visual Web Developer Web服务器。 ● 可通过FTP访问的任意位置。 ● 支持FrontPage Server Extensions的远程Web服务器。 后面两种使用的是远程服务器,由于是在本地开发和测试Web应用程序,所以不用考虑。一般情况下,IIS是安装和运行ASP.NET Web站点的最佳位置,因为它最接近部署Web站点时的配置。此外,还可以选择使用内置的Web服务器,但它有以下限制: ● 只有本地计算机能访问Web站点。 ● 访问SMTP(简单邮件传输协议,Simple Message Transfer Protocol)服务时受限。 ● 安全模型与IIS不同,应用程序运行在当前用户的账户下,而不是运行在ASP.NET的特定账户下。 提示:将【位置】设置为【文件系统】,表示Web站点将使用内置的Visual Web Developer Web服务器。如果希望使用IIS,可设置为【HTTP】,然后指定要创建的站点的URL即可。 单击【新建网站】对话框中的【确定】按钮,Visual Studio 2005将自动创建该站点,如图1-13所示。 图1-13 创建的Web站点 在【解决方案资源管理器】中可以发现Visual Studio 2005自动建立了如下内容: ● 新的解决方案MyWeb,包含C# Web应用程序MyWeb。 ● 用于存放数据(包括XML文件或数据库文件等)的子文件夹App_Data。 ● Default.aspx,Web应用程序中默认的ASP.NET页面。 ● Default.aspx.cs,它是Default.aspx的后台代码类文件。 在本地磁盘导航到C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\MyWeb,可以发现系统自动默认创建的站点文件,与【解决方案资源管理器】中显示的是一致的,如图1-14所示。 图1-14 创建的本地站点目录 ASP.NET 2.0引入了一个非常简单的模型,用于组织Web站点中的文件和注册代码。在该模型下,站点的所有文件都存放在一个文件夹及其子文件夹中。在部署时,整个文件夹将从开发的计算机复制到主机,因而开发人员不需要像在以前的ASP版本中那样创建一个虚拟根目录。 如果要编辑一个已经存在的Web站点,可选择【文件】|【打开网站】命令,打开【打开网站】对话框,如图1-15所示。在左侧列表首先选择存储该站点的位置(这里选择的是【文件系统】),然后在右侧列表框选中要编辑的站点,单击【打开】按钮即可。 在当前编辑的Web站点中,如果要向站点中添加文件夹以便组织页面,可右击项目或某个文件夹,在弹出的快捷菜单中选择【新建文件夹】命令,如图1-16所示。 图1-15 打开Web站点 图1-16 向Web站点添加文件夹 如果要向Web站点添加一个ASP.NET页面,可右击要存放该页面的文件夹,在弹出的快捷菜单中选择【添加新项】命令,打开【添加新项】对话框,其中提供了许多选项,这里需要选择【Web窗体】,然后为新页面命名并选择要使用的语言,最后单击【添加】按钮即可,如图1-17所示。 图1-17 向Web站点添加ASP.NET Web页 1.5.2 运行ASP.NET应用程序 在运行ASP.NET应用程序之前,需要向Default页面中添加一些内容。在【解决方案资源管理器】中右击Default.aspx,在弹出的快捷菜单中选择【查看设计器】命令,Visual Studio 2005将在【设计】视图中打开Default页面,单击该页面并向其中输入文本“欢迎进入ASP.NET 2.0开发世界!”,如图1-18所示。 选择【调试】|【开始调试】命令,系统将弹出一个对话框,询问是否添加一个带有调试的Web.config文件,接受该建议后,浏览器已打开并显示Default页面,如图1-19所示。 图1-18 向Default页面添加内容 图1-19 运行应用程序 在Windows的系统托盘中,有一个黄色的页面图标,双击该图标,将打开如图1-20所示的对话框,上面显示了Visual Web Developer Web服务器的物理和逻辑路径,以及Web服务器监听的端口,通过该对话框还可以停止Web服务器。 在Visual Web Developer Web服务器中调试ASP.NET Web站点时,页面在Visual Studio 2005中会被锁定,如果想修改页面,则必须先关闭浏览器,这在多次修改和调试站点时是十分不方便的。初学者常犯的一个错误是:当页面仍在浏览器中处于打开状态时,却试图在【设计】视图中修改该页面。 提示:ASP.NET应用程序在运行时,站点内的所有页面被编译成MSIL(Microsoft Intermediate Language),这是一种中间语言,此时Visual Basic、C#等.NET语言之间的差异已经消失,因为采用它们编写的应用程序都转化成了MSIL。编译的结果及其支持文件存储在一个程序集中,该程序集是JIT(Just In Time)格式。最后该程序集被编译成目标机器代码并运行。 1.5.3 配置ASP.NET Web站点 ASP.NET 2.0使用Web.Config和Global.asax这两个文件来保存用于整个站点的配置信息和代码。Web.config包含整个站点的配置信息,所有其他页面都可以参考这些设置,这使得开发人员可以免于在每个需要这些配置的文件中,重复设置相同的信息,而只需修改该配置文件即可,例如连接数据库的代码等。Global.asax包含处理事件的代码,这些事件由站点的任意页面产生,例如当用户第一次访问站点时运行的代码等。本节介绍Web.Config配置文件,关于Global.asax的详细分析在后续章节介绍。 在【解决方案资源管理器】中双击文件Web.Config将其打开,如图1-21所示。可以发现:Web.Config是一个XML文件,其节点主要包含以下3方面的信息: ● 应用程序配置,用于设置在开发阶段或部署之后可以使用的功能。 ● 连接字符串,用于从数据源读取数据或向数据源写入数据时连接数据源。 ● System.Web和System.Net,包含了其他所有信息。 第一行包含了XML声明,指出Web.Config文件遵循XML标准。下面是一个较长的解释区域,提醒用户可以使用管理工具或手动方式来修改代码。节点将包含所有节点,这些子节点包含了与存储在站点中的内容相关的配置。 节点用于存储客户应用程序设置,该设置在修改应用程序位于不同环境下的运行方式时非常有用。 节点用于存储与数据源的连接信息,通常包含了身份验证信息,开发人员可以通过该信息将代码与保存在数据库中的数据连接起来。 图1-21 Web.Config文件结构 节点用于存储站点的其他设置信息,它们可以按照任意顺序排列。节点用于设置站点的编译值,如果设置为true,则ASP.NET 2.0将把在编译页面期间发现的问题都输出到该页面上,这在开发站点时非常有用,但在部署站点之前应将其设置为false。节点用于设置站点的身份验证模式,这里选择的是Windows,即Web站点采用Windows的集成验证模式。除此之外,还可以在节点下设置站点的角色和配置文件。最后的节点用于设置站点的错误处理信息,例如设置ASP.NET在出现问题时将用户重定向到一个定制的错误页面等。 设计者可以采用手动修改代码的方式来修改Web站点的配置信息,但在Web.config中查看复杂的XML语法可能比较麻烦,好在ASP.NET 2.0提供了一个图形化的工具,使得开发人员可以修改大部分Web.config中的设置,下面的示例将介绍这一方法。 例1-2 通过管理工具修改Web站点配置信息。 单击【解决方案资源管理器】窗口顶部的【ASP.NET配置】按钮,在浏览器中打开【ASP.NET Web应用程序管理】窗口,如图1-22所示。这是一个内置于ASP.NET的Web站点,通过它可以编辑Web应用程序的配置。 图1-22 ASP.NET Web应用程序配置工具 在【应用程序】选项页中可以管理应用程序的配置信息,如图1-23所示,里面显示了Web.config的一些关键内容,如应用程序设置(节点的内容)、电子邮件设置(节点的内容),以及调试和错误处理(节点的内容)等。 图1-23 配置应用程序信息 向Web站点添加一个页面,命名为Error.aspx。单击【定义默认错误页】链接,在打开的页面中选中【指定要用作默认错误页的URL】单选按钮,然后在MyWeb文件夹下选择添加的Error.aspx文件,单击【保存】按钮,如图1-24所示。 图1-24 自定义错误页 返回到Visual Studio 2005,打开Web.config文件,查看节点中的内容,发现defaultRedirect属性的值已经自动更改为: 关于Web站点其他配置信息的设置,在后续章节用到时将详细介绍。 1.5.4 开发ASP.NET应用程序的注意事项 ● 在ASP.NET应用程序中,大部分情况下不区分大小写字母,但为了程序的易读性和易维护性,建议读者还是严格区分为好。 ● 在ASP.NET应用程序中,凡是用到标点符号的,都是在英文输入状态下输入的,否则将出错,但字符串中的标点符号除外。 ● 普通的HTML元素可以在一行里连写,但ASP.NET语句必须分行写,一条语句就是一行,不能将多条语句写在一行,也不能将一条语句写在多行。 ● 建议读者养成良好的代码编写习惯,比如代码的缩进(Visual Studio 2005会对代码自动进行缩进),变量的命名等。 1.6 自定义ASP.NET开发环境 在继续学习ASP.NET开发技术之前,读者有必要熟悉一下Visual Studio 2005的ASP.NET开发环境,并掌握一些基本的界面定制方法,这在具体开发过程中有时会非常方便,可以加快开发的效率,开阔读者的设计视野。 1.6.1 设计区 ASP.NET应用程序的Web页布局主要通过该区域来完成,设计区提供了两种视图模式:【设计】视图和【代码】视图,通过底部的【设计】和【代码】按钮可以在这两种模式间进行切换,如图1-25所示。 图1-25 设计区 在【设计】视图模式下,设计者可以通过拖放的方式向Web页中添加各种控件,包括文本框、单选按钮、下拉列表等,【设计】视图将显示类似浏览器中显示页面的直观效果。【代码】视图显示了页面的详细代码,如果需要对页面进行细微的修改,而这些修改又无法通过拖放方式实现,那么就只能在【代码】视图中来完成。 设计区的底部有一个导航工具,通过查看导航标记可以知道当前光标位于何处,当前的设置将突出显示,如图1-26所示。设计者也可以单击某个标记,从而在设计区选中该标记所包含的所有内容。导航工具在设计大型、复杂的Web页时会非常有用。 图1-26 设计区底部的导航工具 1.6.2 工具箱 工具箱中提供了ASP.NET服务器端的各种控件,通过工具箱,可直接将所需的控件拖放到Web页的设计区。默认情况下,工具箱停靠在开发界面的左侧,如果没有显示,可选择【视图】|【工具箱】命令显示它。 ASP.NET的所有控件按功能被组织在不同的面板里,可以展开面板以显示面板中的控件,也可以折叠面板以节省工具箱的空间,如图1-27所示。单击并拖动工具箱的标题栏可以将工具箱移动到新的位置。当拖动工具箱时,将显示一个罗盘图标,允许将工具箱向上、向下、向左或向右移动。为了最大化设计区的空间,还可以将工具箱和其他窗口叠放在一起,如【解决方案资源管理器】窗口,如图1-28所示。 图1-27 工具箱 图1-28 将工具箱和【解决方案资源管理器】叠放在一起 在工具箱标题栏的右侧有一个图钉图标,当它为形状时,意味着如果没有用到工具箱时,工具箱将自动隐藏,此时,将鼠标移到工具箱的标题栏时它将自动弹出来。如果为形状,工具箱将一直显示出来。可以通过单击该图标在这两种模式间进行切换。实际上,Visual Studio 2005中的其他窗口也都具有这种功能。 对于不同的应用程序,工具箱中的内容是不同的,例如开发Windows应用程序时工具箱中的内容就和开发Web应用程序时有很大不同。下面列举了开发Web应用程序时,工具箱中常见的几个面板。 ● 标准:包含大多数ASP.NET 2.0服务器端控件。 ● 数据:包含数据源和数据绑定控件。 ● 验证:包含用于验证用户输入有效性的控件。 ● 导航:包含指针、菜单等用于站点导航的控件。 ● 登录:包含身份验证控件。 ● WebParts:包含站点中可由用户重新安排或隐藏的比较大的组件。 ● HTML:包含常用的非ASP标记。 ● 常规:包含可由用户定制的控件。 工具箱的【常规】面板一开始是空的,在创建了页面的一部分后,可以选中该页面并将其拖放到【常规】面板,从而创建一个可复用的工具。这样当需要将这些已经调整好格式的控件复制到其他页面时,便可以使用【常规】面板中的工具了。 1.6.3 属性窗口 属性是一组设置,决定着对象的外观和行为的执行。对象的属性可能非常简单,例如BackColor,用于确定对象的背景颜色;也可能非常复杂,例如DoubleClick,用于确定双击该对象时引发的操作。在ASP版本中,这些功能的实现通常要借助于大量复杂的编码,然而在ASP.NET中,Microsoft已经预先编写了大部分的代码,并将它们封装在服务器端控件中,设计者可以在设计区的【代码】视图中直接设置属性的值,也可以通过【属性】窗口来为属性赋值,如图1-29所示。 可以选择【视图】|【属性】命令以显示【属性】窗口,和工具箱一样,对象的属性也分组显示在不同的面板中,可以展开或折叠这些面板。【属性】窗口的下拉列表框中包含了当前打开页面上的所有控件。单击或按钮,可分别按分类或字母顺序来显示属性。【属性】窗口的底部有一个文本框,用于显示当前选中属性的帮助信息。如果要在【属性】窗口中显示事件,可单击【事件】按钮。关于事件的详细内容,后续章节会详细介绍。 修改属性的基本方法是首先在设计区选中一个对象,通常是一个控件,然后在【属性】窗口中找到要修改的属性,进行设置即可。不同的属性所允许的设置值是不同的,如果该属性可选的值有限,则可在属性右侧的下拉列表中进行选择,设置完成后按Enter键或Tab键以最终确定,设计区的【设计】视图将显示最终的结果。如果属性的值不是有限的,例如值为SQL语句的属性,此时就必须手动进行输入了。 注意:有些属性可能只能接收字符串,为了避免错误,建议读者不要用输入的方式为该属性赋值,最后的方法是从列表中选择。 1.6.4 错误列表窗口 当ASP.NET应用程序出现问题时,可通过两种方法查看问题所在:一种是通过发送到浏览器的页面错误报告,另一种就是通过【错误列表】窗口。 如果Web.config文件中包含以下代码,那么ASP.NET 2.0将把与页面相关的错误报告发送给浏览器,如图1-30所示。 图1-30 通过浏览器查看错误报告 ASP.NET应用程序在第一次运行时,Web.config中默认的设置是。如果Web页面上存在错误,那么运行该页面时浏览器中将显示一个以黄色和白色为主色调的页面。黄色部分显示引发错误的文件名称和该文件中包含的错误代码行号。需要注意的是:在部署Web站点时,最后将debug的值设置为false以提高性能。 在【错误列表】窗口中也可以查看错误信息,该窗口默认只有在运行页面的时候才显示出来,如图1-31所示,显示了在将页面转换成MSIL时所遇到的所有问题。可以选择【视图】|【错误列表】命令打开该窗口。 图1-31 【错误列表】窗口 【错误列表】窗口顶部有3个按钮图标:【错误】、【警告】和【消息】。单击这些图标将显示在编译页面过程中创建的不同列表信息。错误列表显示使得整个页面、或者页面的某个部分运行失败的信息,这包括引用不存在的对象造成的错误等;警告列表显示的是在编译页面时Visual Studio 2005可以解决的问题,例如缺少结束标记等;消息列表显示的是程序员包含在代码中的文本信息,当IIS编译页面时它们会显示出来。 在【错误列表】窗口中双击某条信息,可以将光标定位到导致该信息产生的代码行,这使设计者修改程序或页面变得十分容易。 本 章 小 结 本章介绍了开发ASP.NET应用程序所必备的一些基础知识,包括网页的工作原理,ASP.NET与.NET Framework的关系,ASP.NET运行环境的配置,以及如何创建、运行和配置ASP.NET Web站点等内容。末尾对ASP.NET的开发环境进行了简单介绍,以便于读者尽快熟悉这一高效的开发工具。下一章向读者介绍Visual C#的基本编程知识。 习 题 填空题 1. 应用程序有两种模式,分别是 和 。 2. 静态网页是指 ,动态网页是指 。 3. 常用的Web应用程序开发技术有 、 、 和 。 4. 使用ASP.NET开发Web应用程序,要借助于.NET Framework的 和 。 5. ASP.NET应用程序语言的无关性,要依赖于.NET的 。 6. 在客户端浏览ASP.NET Web页面时,要求Internet Explorer的版本最低为 。 7. 用于保存整个站点配置信息的文件是 。 8. ASP.NET Web页面的设计区包含两种视图模式,分别是 和 。 选择题 9. 下面的Web应用程序开发技术中,属于开源的是( )。 A. ASP B. JSP C. PHP D. ASP.NET 10. 如果希望创建的Web页面使用Visual Studio 2005内置的Visual Web Developer Web服务器,应将【位置】设置为( )。 A. 文件系统 B. FTP C. HTTP 11. 关于ASP.NET应用程序,下面说法不正确的是( )。 A. 浏览器实际上并不支持ASP.NET中的服务器控件及其代码,页面是通过服务器处理并转化为标准的HTML页面后,返回给客户端浏览器显示的。 B. 要成功运行ASP.NET应用程序,服务器端必须安装.NET Framework SDK。 C. 文件Web.Config不支持XML标准。 D. ASP.NET应用程序不区分大小写。 简答题 12. 简述动态网页和静态网页的区别。 13. 简述ASP.NET应用程序的执行过程。 14. 开发ASP.NET应用程序时都需要注意什么问题? 上机操作题 15. 创建一个简单的ASP.NET应用程序,配置其站点信息并运行。 ?? ?? ?? ?? ASP.NET 2.0开发技术简明教程 ? 第1章 导 论 ? 2 15