第12章配置调试和发布Web应用程序.docx
- 文档编号:8028790
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:37
- 大小:607.24KB
第12章配置调试和发布Web应用程序.docx
《第12章配置调试和发布Web应用程序.docx》由会员分享,可在线阅读,更多相关《第12章配置调试和发布Web应用程序.docx(37页珍藏版)》请在冰豆网上搜索。
第12章配置调试和发布Web应用程序
第12章配置、调试和发布Web应用程序
12.1配置web应用程序
ASP.NET程序的配置主要包括设置应用程序的目录结构和设置相应的配置文件,其中设置配置文件主要是针对global.asax和web.config配置文件。
在开发完Web应用程序后,就需要在服务器上部署ASP.NET应用程序。
部署应用程序的过程是一个安装程序和配置程序的过程。
首先介绍如何配置global.asax和web.config文件,然后再介绍ASP.NET应用程序的部署方法和注意事项。
12.1.1配置文件Web.config
自在每一个ASP.NET应用程序的目录中都包含一个web.config文件,该文件就是ASP.NET的配置文件,其格式为XML格式的纯文本文件。
配置内容被包含在web.config文件中的标记 --”和“-->”之间。 Web.config文件的配置分为配置节处理程序声明、 配置节处理程序声明一般位于配置文件顶部的 每个声明都包含在一个 在默认的web.config文件中没有 配置节处理程序声明部分的语法定义如以下程序所示。 </configsections> <欲定义配置段名> … 欲定义配置段名> 其中, ·name属性: 定义字段的名字。 ·type属性: 定义该字段对应的处理函数句柄。 其中,标签 ·Key属性: 指定该设置项的名字,便于在程序中引用。 ·Value属性: 指定该设置项的值。 在如以下程序所示的例子中,设置关键字ErrorPage的值为页面ShowError.aspx。 配置节设置区域一般位于 配置节设置部分里可以完成大多数网站参数的设置。 在配置节中可以包括很多的配置段,几个常用的配置段的具体含义如下。 · 负责配置http模块的会话状态。 · 配置应用的公用设置。 · 配置ASP.NET的编译环境。 · 配置ASP.NET的错误跟踪服务。 · ASP.NET的安全配置。 · 在IIS上配置ASP.NET的处理模式。 · 配置浏览器的兼容部件。 。 · 可以定义自己需要的应用程序设置项。 · 进行安全配置工作,例如身份验证模式的配置。 · 用于自定义错误信息。 · 设置应用程序的授权策略。 12.1.1.1身份验证和授权 配置节设置部分的 可以选择的模式有如下几种: 1.Windows: IIS根据应用程序的设置执行身份验证。 2.Forms: 在程序中为用户提供一个用于身份验证的自定义窗体(Web页),然后在应用程序中验证用户的身份。 用户验证信息存储在Cookie中。 3.Passport: 身份验证时通过Microsoft的集中身份验证服务执行的,它为成员站点提供单独登陆和核心配置文件服务。 4.None: 不执行身份验证。 当用户指定身份验证模式为Forms时,需要添加元素 1.Name: 它用来指定完成身份验证的HTTPcookie的名称,其默认值为ASPXAUTH。 2.LoginUrl: 它定义没有通过有效验证时重定向到的URL地址。 3.Protection: 指定cookie数据的保护方式。 可设置为All,None,Encryption和Validation。 其中All表示通过加密cookie数据和对cookie数据进行有效性验证两种方式来对cookie进行保护;None表示不保护;Encryption表示对cookie内容进行加密;Validation表示对cookie内容进行有效性验证。 4.TimeOut: 指定cookie失效的时间。 超时后将需要重新进行登录验证获得新的cookie。 下面我们将看到一个关于身份验证的实际配置内容。 身份验证模式为窗体验证模式(Form),如果验证没通过将重定向到Login.aspx登陆页面,设置cookie保护模式为All,并设置cookie失效时间为30分钟。 程序如下所示: Protection=”All”timeout=”30”> </authentication> 完成以上设置后,需要在工程中添加一个名字为login.aspx的页面文件。 在该页面中通常让用户输入用户名和密码,以实现用户的身份验证。 关于进行窗体验证模式身份验证的实例,我们在后面的章节中还要详细讲述。 12.1.1.2web.config文件的其他设置 上一节对 1. 定义如以下程序所示。 defaultLanguage="c#" debug="true" 其中,defaultLanguage属性定义所使用的后台代码语言,可以选择C#和VB.net两种之一;debug属性值为true时将启用ASPX调试,属性值为false则不使用ASPX调试,默认属性值为进行ASPX调试。 提示: 把debug属性设置为false可以提高应用程序运行时性能。 在实际开发中,在程序的调试阶段应该设置debug属性为true,当测试完成后应该把该属性设置为false。 2. mode="模式" [defaultRedirect="缺省的重定向页面"] [ redirect="错误代码发生时的重定向页面"/>] </customErrors> 其中,错误模式可以选择以下3种值。 ·On: 表示始终显示自定义的信息。 ·Off.表示始终显示详细的ASP.NET错误信息。 ·RemoteOnly: 默认的错误模式,表示只对不在本地Web服务器上运行的用户显示 自定义的信息。 一般来说,出于安全方面的考虑,只需要向外界用户显示自定义的 错误信息,而不是显示详细的调试错误信息,此时需选择RemoteOnly状态。 defaultRedirect参数是一个可选的属性,用于指定出现错误后,如果没有通过 ·statusCode: 指明错误状态码。 ·redirect: 发生对应的指明错误状态码时,应该重定向的URL地址。 以下的程序是一个实际的 当发生错误代码440时,页面被重定向到error440.aspx;当发生错误500时,页面被重定向到error500.aspx;如果发生其他的错误,则页面被重定向达到error.aspx。 mode="on" defaultRedireet="error.aspx" redirect="error440.aspx"/> redirect="error5OO.aspx"/> 3. 在默认情况下,ASP.NET使用Cookie来标识哪些请求属于特定的会话。 如果Cookie不可用,则可以通过将会话标识符添加到URL来跟踪会话。 基本语法定义如以下程序所尔。 mode="InProc" stateConnectionString="tcpip=l27.O.O.1: 42424" sqlConnectionString="datasource=127.0.0.1;userid=sa;password=" cookieless="false" timeout="20" </sessionStat> 其中,mode用于设置存储会话状态,可以使用如下值。 ·Off: 表示禁用会话状态。 ·Inproc: 表示工作进程自身存储会话状念,在系统不崩溃情况下,不丢失会话状态。 ·StateServer: 表示将把会话信息存放在一个单独的ASP.NET状态服务中。 ·SqlServer: 表示将把会话信息存放在SQLServer数据库中。 stateConnectionString主要用来指定为ASP.NET应用程序存储远程会话状态的服务器名,默认为本机。 如果把mode设置为SqlServer,则需要设置sqlConnectionString完成SQLServer数据库的连接字符串设定。 Cookieless用于设置是否使用Cookie,设置为true表示不使用Cookie会话标识客户,否则表示启用Cookie会话状态。 TimeOut用来定义会话状态维持的时间数,超过该期限后会自动结束会话,默认设置为20。 4. 应用程序 级别跟踪为应用程序中的每一页启用跟踪日志输出,其语法定义如以下程序所示。 enabled="false" requestLimit="1O" pageOutput="false" traceMode="SortByTime" </trace> 其中,enabled用来指定应用程序跟踪特性的状态,设置值为true可以启用应用程序跟踪记录。 requestLimit用来指定存放在服务器上的跟踪请求的数目,默认值为1O。 pageOutput用于设置是否在每一页的底部显示跟踪信息。 设置值为true可以在每个页面的 末尾显示应用程序跟踪信息,设置为false表示只通过trace实用程序访问跟踪信息。 traceMode用于设定跟踪的模式,默认为按时间排序(SortByTime)。 5. 基本语法定义如以下程序所示。 roles="[逗号分隔的角色列表]"/> roles="[逗号分隔的角色列表]"/> </authorization> 其中, ·users: 用于设置允许访问的用户列表,如果是多个用户则使用逗号分隔。 ·roles: 用于设置用户的角色,如果是多个用户则使用逗号分隔。 ·users: 用于设置禁止访问的用户列表。 ·roles: 用于取消用户的角色,如果是多个用户则使用逗号分隔。 注意: 在 ”来表示匿名(未经身份验证的)用户。 12.1.1.3在代码中获取Web.Config应用程序设置 在配置Web.Config文件后,可以在程序中读取这些设置信息。 如果希望读取 下面通过一个实例演示如何从文件中读取应用程序设置。 首先编辑Web.config文件,在文件的开始增加如下的内容,具Web.config体如以下程序所示。 xmlversion="1.0"encoding="utf-8¨? > PersistSecurityInfo=False;Password=sa;UserID=sa;DataSource="lnfo,"/> database=pubs;Trusted_Connection=no"/> </appSettings> … </system.web> </configuration> 这里定义了ORACLEConnectionString键,表示连接Oracle数据库的连接字符串,定义SQLConnectionString键,表示连接SQLServer数据库的连接字符串。 在后面的代码中要读取SQLConnectionString的值,用来连接数据库。 然后,在页面中添加一个GridView控件。 最后,在Default.aspx.cs文件的Page_Load事件中添加如下代码用于读取Web.config文件中SQLConnectionString的设置值,并用来连接数据库。 代码如下所示: protectedvoidPage_Load(objectsender,EventArgse) { //在此处放置用户代码以初始化页面 SqlConnectioncon=newSqlConnection(System.Configuration.ConfigurationSettings.AppSettings["con"]); con.Open(); SqlCommandcmd=newSqlCommand("select*fromemployee",con); this.GridView1.DataSource=cmd.ExecuteReader(); this.GridView1.DataBind(); } 在代码中通过ConfigurationSettings.AppSettings["con"]返回 图12-1Web.config应用示例运行页面 12.1.2全局应用程序类Global.asax文件 在每一个ASP.NET应用程序里都包含一个名为Global.asax的文件。 它主要负责一些高级别的应用程序事件,例如应用程序的开始和结束、会话状态的开始和结束等。 开发人员可以在Global.asax中编写一些处理程序级别的事件的代码,并且将这个文件放置于程序所在的虚拟目录中。 当第一次请求程序中的任何资源或URL时,ASP.NET会自动将这个文件编译成一个.NETFramework类(继承自HttpApplication类)。 任何外部的用户将无法直接下载或者浏览Global.asax文件。 在Global.asax文件中包括以下几个程序级别的事件。 如12-1表所示。 表12-1在Global.asax文件中包括的事件 事件 何时激发 Application_Start 在调用当前应用程序目录(或子目录)的第一个ASP.NET页面时激发 Application_End 在应用程序最后一个会话结束时激发,此外,在使用Internet服务管理器管理单元停止Web应用程序时也会激发 Application_BeginRequest 在每次页面请求开始时(理论上,在加载或刷新页面时)激发 Application_EndRequest 在每次页面请求结束时(即每次在浏览器执行该页面时)激发 Session_Start 在每次新的会话开始时激发 Session_End 在会话结束时激发 Application_error ASP.NET程序出错时触发该事件 如果Global.asax文件位于没有被标记为应用程序的目录中,那么Global.asax将不起作用。 Global.asax文件也被称为全局应用程序类。 在web网站中添加该应用程序类,选择“添加新项”菜单,出现图12-2,选中“全局应用程序类”,可把Global.asax文件添加到网站中。 图12-2在VS2005应用程序中添加Global.asax文件 下面通过两个例子来说明Global.asax文件在全局中的作用。 [例12.1]应用程序计数器,统计在线人数。 用VisualStudio2005建立应用程序网站: webconfig,在网站中添加全局应用程序类: Global.asax,放入如下代码: voidApplication_Start(Objectsender,EventArgse) { Application["count"]=0;//该事件启动程序时发生,现为在线人数起始值 } voidSession_Start(Objectsender,EventArgse) { Application.Lock();//并发控制加锁 Application["count"]=(int)Application["count"]+1;//统计在线人数。 Application.UnLock();//并发控制解锁 } 在Webform1表单的代码文件Webform1.aspx.cs中写入如下代码: protectedvoidPage_Load(objectsender,EventArgse) { //在此处放置用户代码以初始化页面 Response.Write(Application["count"].ToString());//输出在线人数计数值 } [例10.2]记录在线人数和历史访问人数,即多少人在线,多少人曾经访问过这个网站。 首先,需要在SQLServer中建立数据库CountPeople,并建表CountPeople,只有一个字段num.为int类型。 仍用例12.1的网站: webconfig。 因为要连接SQLServer数据库,故要在Global.asax文件中需要引入名称空间。 格式为: <%@ImportNamespace="System.Data.SqlClient"%>,引入位置见图12-3。 图12-3Global.asax文件 并输入如下代码: voidApplication_Start(Objectsender,EventArgse) { SqlConnectioncon=newSqlConnection("Server=.;Database=CountPeople; uid=sa;pwd=;");con.Open(); SqlCommandcmd=newSqlCommand("select*fromCountPeople",con); intcount=Convert.ToInt32(cmd.ExecuteScalar());//取出数据库中的记录 con.Close(); Application["total"]=count;//记录历史访问人数 Application["online"]=0;//记录在线人数 } voidSession_Start(Objectsender,EventArgse) { Application.Lock();//并发控制加锁 Application["total"]=(int)Application["total"]+1; Application["online"]=(int)Application["online"]+1; Application.UnLock();//并发控制解锁 } voidSession_End(Objectsender,EventArgse) {//会话
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 配置 调试 发布 Web 应用程序