Asp_Net-Handler-Part_1

合集下载

asp。net考试

asp。net考试

第1章开发环境1.简述你对的事件驱动机制的理解。

使用一个事件驱动编程模型。

该模型定义了一个事件序列,这些事件在页面的生命周期中被依次引发,顺序为Init →Load →控件事件→Unload对每个引发的事件,你可能需要完成一些任务。

可以在称为事件处理过程中编写代码。

例如,可以在Web页面的Init或Load事件中编写页面初始化代码。

Page_Init是页面的Init 事件的事件处理器,而page_Load是页面的Load事件的事件处理器。

2.简述页面的事件序列,事件触发时机及顺序。

3.IsPostBack的作用是什么?(如何判断页面第一次加载)在page_Load的过程中,你可以读取或者重置页面的属性和控件的属性,根据IsPostBack属性判定页面是否为第一次被请求,执行数据绑定等等。

IsPostBack属性为false表明页面是被第一次显示,为true表明页面被请求后返回(PostBack)的结果值。

4. 简述B/S和C/S架构应用的工作模式及主要不同点。

第6章服务器端控件1.验证控件有哪几种?简述它们各自的功能。

2.使用用户控件有哪些优点?Web窗体怎样转化为用户控件?用户控件使你能方便地在多个页面中重用相同的内容和应用程序逻辑。

Web窗体页改成用户控件步骤:(1)在代码文件中,将后置代码的基类从System.Web.UI.Page更改为erControl。

(2)从.aspx文件中删除<html>、<head>、<body>和<form>标记。

(3)将指令类型从@Page更改为@Control。

(4)把Codebehind属性值中对应的代码文件的扩展名改为ascx.cs。

(5)将.aspx文件扩展名更改为.ascx。

第7章内置对象与应用程序配置1.为什么要对Application对象进行锁定?何时进行锁定?由于Application对象是所有用户共享的,为了避免修改时出现出现争用、死锁或访问冲突,在对Application对象进行修改时,必须先将其锁定,修改完之后进行解锁。

ASPNET程序设计实验题目

ASPNET程序设计实验题目

程序设计实验题目项目一创建应用程序开发环境1.把你的计算机变成WEB服务器。

安装WEB服务器软件IIS。

2.安装的运行环境.NET Framework。

3.安装数据库系统,如SQL SERVER等。

4.熟悉开发环境。

5.开发一个用户注册程序,掌握新建文件的整个过程。

a)要求自行设计界面,其中用户名文本框的默认值为你的姓名,各控件的ID设置要具有含义。

b)注册后能在网页界面中显示用户填写的内容。

6.完成项目拓展练习。

项目二设计制作网络计算器(一)掌握基本控件的使用方法bel、TextBox、Button、DropDownList、ListBox、Table控件的使用,如设置或读取属性。

2.设计制作网络计算器界面。

(二)掌握C#基本语句的编写方法1.基本数据类型,C#语言的运算符与表达式的使用。

2.分别创建一个Windows控制台应用程序、WEB应用程序,了解C#程序结构。

3.流程控制语句:if-else 语句、switch语句,while 语句、do-while语句、for语句的使用。

4.编写网络计算器的代码。

编程基础练习3.编写一个程序,求三数的算术平均值,并在屏幕上输出。

(变量)4.已知圆的半径,求出该圆的直径、周长和面积。

(表达式)5.编程实现从三个整数中选出最大和最小者,并显示输出。

(条件运算符)6.判断一个整数n是否是一个能被23整除的三位奇数。

(运算符)7.某市出租车3公里的起租价为10元,3公里以外,按1.8元/公里计费。

现编程输入行车里程数,输出应付车费。

(If语句)8. 考察目前银行对整存整取存款不同期限的储蓄利率,根据存入的本金和一定期限的存款到期时的利息,计算税后(利息税为5%)利息与本金的和。

当前整存整取年息利率参考:三个月为1.71%,六个月为2.07%,一年为2.25%,二年为2.7%,三年为3.24%,五年为3.6%。

(switch语句)9.编写程序找出所有的水仙花数。

《ASP.net》实验指导书

《ASP.net》实验指导书

ASP实验指导书目录实验1: ASP Web服务器的安装与配置................................- 1 - 实验2:HTML标记符的使用(表格、表单对象、CSS样式) ......................................................................................................- 3 - 实验3:VBScript 程序设计..................................................- 5 - 实验4:ASP内建对象..............................................................- 7 - 实验5:数据库基础知识 ......................................................- 10 - 实验6:ASP存取数据库 .......................................................- 12 - 实验7:深入进行数据库编程..............................................- 13 - 实验8:文件存取组件及其他组件 .....................................- 16 -实验1:ASP Web服务器的安装与配置一、实验目的熟悉IIS的安装过程与配置方法。

通过编写简单的ASP页面,掌握ASP网页的编写和运行方法。

二、实验器材及数量Windows Server计算机系统,安装IIS、Macromedia Dreamweaver 8.0、Internet Explorer浏览器、Access数据库等。

三、实验原理利用ASP中对象的方法、事件、属性制作动态网页。

习题及参考答案 ASPNET案例教程教辅资料 教学课件

习题及参考答案 ASPNET案例教程教辅资料 教学课件

第1章习题及参考答案一.单选题1.(C )技术是基于Java Servlet以及整个java体系的Web开发技术。

A.CGI B.ASP C.JSP D.PHP2.下面哪一个不是动态网页技术(D )。

A. B.ASP C.JSP D.HTML3.在客户端网页脚本语言中最为通用的是( A )。

A.JavaScript B.VB C.Perl D.ASP4.下列描述错误的是( B )。

A.DHTML是HTML基础上发展的一门语言B.HTML主要分为两大类:服务器端动态页面和客户端动态页面C.客户端的DHTML技术包括HTML4.0、CSS、DOM和脚本语言D.DHTML侧重于WEB内容的动态表现5.可以不用发布就能在本地计算机上浏览的页面编写语言是(B )。

A.ASP B.HTML C.PHP D.JSP6.一个HTML文档必须包含3个元素,它们是html、head和(B )。

A.script B.body C.title D.link7.下面(C )是换行符标签。

A.<body> B.<font> C.<br> D.<p>8.为了标识一个HTML文件,应该使用的HTML标记是( C )。

A.<p></p> B.<boby></body> C.<html></html> D.<table></table> 9.在静态网页中,必须使用(A )标记来完成超级链接。

A.<a>…</a>B.<p>…</p>C.<link>…</link>D.<li>…</li> 10.用HTML标记语言编写一个简单的网页,网页最基本的结构是(D )。

A.<html> <head>…</head> <frame>…</frame> </html>B.<html> <title>…</title> <body>…</body> </html>C.<html> <title>…</title> <frame>…</frame> </html>D.<html> <head>…</head> <body>…</body> </html>11.以下标记符中,用于设置页面标题的是(A )。

网络程序ASP课后题答案

网络程序ASP课后题答案

目录第1章ASP程序设计概述 (1)习题1 (1)第2章HTML基础知识 (5)习题2 (5)第3章VBScript基础知识 (11)习题3 (11)第4章Request和Response对象 (21)习题4 (21)第5章Session和Application对象 (34)习题5 (34)第6章Server对象 (40)习题6 (40)第7章数据库基础知识 (47)习题7 (47)第8章ASP存取数据库 (50)习题8 (50)第9章深入进行数据库编程 (57)习题9 (57)第10章文件存取组件及其他组件 (62)习题10 (62)第11章使用第三方组件 (68)习题11 (68)第12章网络程序开发实例 (73)习题12 (73)第1章ASP程序设计概述习题11. 选择题(可多选)(1)静态网页的扩展名一般是:A.htm B .php C.asp D.jsp答案:A(2)ASP文件的扩展名是:A.htmB. txtC. docD. asp答案:D(3)当前的Web程序开发中通常采用什么模式?A. C/SB. B/SC. B/BD. C/C答案:B解释:C/S是客户机(client)/服务器(server),B/S是浏览器(browser)/服务器。

C/S一般要求用户有特定的客户端。

比如QQ就是C/S模式,你的桌面上的QQ就是腾讯公司的特定的客户端,而服务器就是腾讯的服务器。

而B/S模式则不需要特定的客户端,只要有普通浏览器,就可以访问到服务器了,Web页就是B/S 模式。

(4)小王正在家里通过拨号上网访问搜狐主页,此时,他自己的计算机是:A. 客户端B. 既是服务器端又是客户端C. 服务器端D. 既不是服务器端也不是客户端答案:A(5)小王正在访问自己计算机上的网页,此时,他自己的计算机是:A. 客户端B. 既是服务器端又是客户端C. 服务器端D. 既不是服务器端也不是客户端答案:B(6)ASP脚本代码是在哪里执行的?A. 客户端B. 第一次在客户端,以后在服务器端C. 服务器端D. 第一次在服务器端,以后在客户端答案:C解释:ASP脚本代码是在服务器端运行的,服务器将其解释执行为标准的HTML 代码,然后发送到客户端。

《ASP.Net开发》期终考试试卷(B卷)及答案

《ASP.Net开发》期终考试试卷(B卷)及答案

适用专业:请各位考生注意:所有答案必须填写到答题纸上,否则不计分。

一、选择题(每小题2分,共50分,单选题)1.用于使用已创建的自定义控件的指令为()A、RegisterB、ControlC、TagPrefixD、Import2.关于HttpHandler程序的说法不正确的是()A、后缀名为.ashxB、请求处理的终点C、实现了IHttpHandler接口D、IsReusable属性为False时,程序只能使用一次3.为了保护网页,将被保护的网页分类置于不同的目录下,这是为了()A、便于管理B、调用方便C、便于网站的改版D、便于网站的迁移4.如需要添加用户角色,下面哪个工具比较方便?()A、web站点管理工具B、MMC 插件C、内部发布工具D、Xcopy5.在子目录Admin文件夹的Web.config文件中有这样一段代码:<authorization ><deny users=”?”/></ authorization >这说明()A、只有管理员可以访问Admin目录B、所有匿名用户都可以访问Admin目录C、所有匿名用户都不可以访问Admin目录D、所有用户都不可以访问Admin目录6.APP_Data目录用来放置()A、专用数据文件B、共享文件C、被保护的文件D、代码文件7.设置分页时,设置页面大小的属性为()A、PageSettingB、PageINdexC、PageSizeD、AllowPaging8.@Page指令,下面说法不正确的是()A、语言属性可以写JA V AB、AutoEventWireup属性可以不写C、CodeFile可以不写,但必须Inherits也不写D、AutoEventWireup所指定的页面事件包含Page_Load9.当跨页传递数据时,哪个属性标识源页面是跨页提交?()A、IsPostBack B、IsCrossBackC、PreviousPageD、IsCrossPagePostBack10.有关母版页的说法正确的是()A、一个站点只能有一个母版页B、一个内容页对应母版页中的一个位置ContentPlaceHolderC、内容页相当于HTML中的Iframe页,浏览地址显示母版页地址D、母版页的后缀名为.master11.有关ObjectDataSource说法正确的是()A、只能绑定数据访问层方法,才能返回正确数据B、只有通过方式访问数据库,才能使用ObjectDataSourceC、ObjectDataSource可以直接指向数据库,返回DataSetD、ObjectDataSource一般绑定业务逻辑层方法12.ValidationSummary控件的作用是()A、检查总和数B、集中显示所有验证的结果C、判断有无超出范围D、检查数值大小13.需要验证TextBox的输入数据为年龄,并且要求大于18岁,小于65岁,应该使用的验证控件是()A、CompareValidatorB、RangeValidatorC、RequiredFieldValidator和RangeValidatorD、RequiredFieldValidator和CompareValidator14.DataList的换行符模板是()A、SeparatorTemplateB、ItemTemplateC、TemplateFieldD、AlternatingItemTemplate15.关于Repeater控件,下列说法正确的是()A、Repeater控件不能显示内容B、Repeater控件不能显示Html的内容C、Repeater控件不会自动添加Html的相关内容D、Repeater控件不会显示没有设置格式的内容16.下面是TreeView控件代码:<asp:TreeNode Text=”Node1” SelectAction=”Extend”><asp:TreeNode Text=”Node2”….><asp:TreeNode Text=”Node3”….></ asp:TreeNode>当鼠标单击“Node1”时只进行的操作。

asp教程

asp教程

asp教程ASP(Active Server Pages)是一种由Microsoft开发的服务器端技术,用于动态生成和交互式网页。

下面是ASP的一些基本概念和用法。

1. ASP基本语法ASP使用尖括号 "<%" 和 "%>" 标记来包围服务器端代码。

例如:```asp<%Response.Write "Hello, World!"%>```2. 变量和数据类型在ASP中,可以使用 "Dim" 关键字声明变量,并指定其数据类型。

常用的数据类型包括字符串(String)、整数(Integer)、浮点数(Double)等。

3. 条件语句和循环语句ASP支持常见的条件语句和循环语句,例如if语句、for循环和while循环等。

通过这些语句,可以根据不同的条件执行不同的代码块,或者重复执行一段代码。

4. 表单处理在ASP中,可以通过表单来接收用户的输入,并进行相应的处理。

使用"Request.Form"对象可以获取表单数据的值,然后可以对其进行验证和处理。

5. 数据库访问ASP可以连接和操作各种类型的数据库,如Microsoft SQL Server、MySQL等。

可以使用ADO对象(ActiveX Data Objects)来执行SQL查询和更新操作。

6. 错误处理和调试对于可能发生的错误,ASP提供了一些处理方法,如使用Try-Catch块来捕获异常并进行相应的处理。

还可以通过日志记录或输出错误信息来帮助调试程序。

7. 会话管理ASP提供了会话管理功能,可以跟踪用户的访问,并在多个页面之间共享数据。

可以使用Session对象来存储和获取会话变量的值。

以上是ASP的一些基本概念和用法,通过学习和掌握这些内容,可以开始使用ASP开发动态网页和Web应用程序。

ASP.NET页面事件执行过程(完整版)

ASP.NET页面事件执行过程(完整版)

页⾯事件执⾏过程(完整版) 母版页和内容页中的事件母版页和内容页都可以包含控件的事件处理程序。

对于控件⽽⾔,事件是在本地处理的,即内容页中的控件在内容页中引发事件,母版页中的控件在母版页中引发事件。

控件事件不会从内容页发送到母版页。

同样,也不能在内容页中处理来⾃母版页控件的事件。

在某些情况下,内容页和母版页中会引发相同的事件。

例如,两者都引发和事件。

引发事件的⼀般规则是初始化事件从最⾥⾯的控件向最外⾯的控件引发,所有其他事件则从最外⾯的控件向最⾥⾯的控件引发。

请记住,母版页会合并到内容页中并被视为内容页中的⼀个控件,这⼀点⼗分有⽤。

下⾯是母版页与内容页合并后事件的发⽣顺序:1. 母版页控件 Init 事件。

2. 内容控件 Init 事件。

3. 母版页 Init 事件。

4. 内容页 Init 事件。

5. 内容页 Load 事件。

6. 母版页 Load 事件。

7. 内容控件 Load 事件。

8. 内容页 PreRender 事件。

9. 母版页 PreRender 事件。

10. 母版页控件 PreRender 事件。

11. 内容控件 PreRender 事件。

母版页和内容页中的事件顺序对于页⾯开发⼈员并不重要。

但是,如果您创建的事件处理程序取决于某些事件的可⽤性,那么您将发现,了解母版页和内容页中的事件顺序很有帮助。

Page 执⾏中将按照如下顺序激活事件:Page.PreInitPage.InitPage.InitComplitePage.PreLoadPage.LoadPage.LoadCompletePage.PreRenderPage.PreRenderComplete如果页⾯从另⼀个页⾯继承,如BasePage:System.Web.UI.Page,在BasePage中做了⼀些扩展,如权限检查,⽽其他页⾯从BasePage继承,则BasePage和最终Page的事件激活顺序是:UI.PreInitPage.PreInitUI.InitPage.InitUI.InitComplitePage.InitCompliteUI.PreLoadPage.PreLoadUI.LoadPage.LoadUI.LoadCompletePage.LoadCompleteUI.PreRenderPage.PreRenderUI.PreRenderCompletePage.PreRenderComplete如果使⽤了MasterPage,则MasterPage中的事件和ContentPage中的事件按照下⾯顺序激活:ContentPage.PreInitMaster.InitContentPage.InitContentPage.InitCompliteContentPage.PreLoadContentPage.LoadMaster.LoadContentPage.LoadCompleteContentPage.PreRender更进⼀步,如果ContentPage继承BasePage,那么,各事件的执⾏顺序将变成:UI.PreInitContentPage.PreInitMaster.InitUI.InitContentPage.InitUI.InitCompliteContentPage.InitCompliteUI.PreLoadContentPage.PreLoadUI.LoadContentPage.LoadMaster.LoadUI.LoadCompleteContentPage.LoadCompleteUI.PreRenderContentPage.PreRenderMaster.PreRenderUI.PreRenderCompleteContentPage.PreRenderComplete浏览下来发现并不是我现在所学的 1.1,估计应该是 2.0,不过也没有关系,这让我知道了他们有继承时加载的顺序。

ASP.NET日志的记录(登录日志和异常日志和操作日志)

ASP.NET日志的记录(登录日志和异常日志和操作日志)

⽇志的记录(登录⽇志和异常⽇志和操作⽇志)⼀、⽇志的记录⽇志的记录⽇志的记录其实没那么简单,需要登录⽇志,异常⽇志。

其实可以有这句话引出try{LogHelper.Insert("fun_orgmgr", "机构管理", "新增了机构:" + orgname, 1, UserAuthentication.Current().GetUserAuthInfo().UserID);}catch (Exception ex){result.Code = "1";result.Message = ex.Message;LogHelper.AddError("fun_orgmgr", "删除机构信息时出现异常:" + ex.Message, 1, ex.StackTrace);}⽇志记录页⾯代码其中的LogHelper.AddError()是Controls层中的LogHelper类的AddError⽅法,是增加⽇志功能。

LogHelper.Insert()是增加⽇志功能,这两个⽇志的增加要放到不同的表⾥⾯。

例如T_LoginLog和T_LoginLog在Insert()中的那⼏个字段是⼲什么⽤的呢?功能ID,⽇志摘要,⽇志正⽂,⽇志类型,发起⽤户ID,可以调出LogHelper.Insert()⽅法来看。

看前注意,这个LogHelper类是放到Controls层⾥⾯的,专门⽤来解决⽇志的问题,按我的理解应该是个bll层,拿AddError()来说,在赋值实体之前,实例化了⼀个实体,这个没什么说的,⼜实例化⼀个ActionLogService类,这个类是bll层的对⽇志实体进⾏增删改的操作,不仅对流程熟悉下,对怎样插⼊⽇志的需要的字段理清下。

最后⽤return bll.Insert(entity);来插⼊⽇志。

asp.net期末考试题及答案

asp.net期末考试题及答案

期末考试题及答案一、选择题(每题2分,共20分)1. 中用于创建Web应用程序的编程语言是:A. C++B. C. JavaD. Python答案:B2. 在中,以下哪个不是内置的服务器控件?A. LabelB. TextBoxC. ButtonD. ComboBox答案:C3. 应用程序的入口点是:A. Global.asaxB. Web.configC. Default.aspxD. App_Start答案:C4. 在中,以下哪个不是数据绑定控件?A. GridViewB. RepeaterC. DropDownListD. TextBox答案:D5. 应用程序的生命周期中,第一个执行的事件是:A. Page_InitB. Page_LoadC. Page_PreRenderD. Page_Unload答案:A6. 在中,用于处理表单提交的事件是:A. ClickB. SubmitC. LoadD. PostBack答案:D7. 中用于实现用户身份验证的控件是:A. LoginB. TextBoxC. LabelD. Button答案:A8. 在中,以下哪个不是Web.config文件中的配置元素?A. <appSettings>B. <connectionStrings>C. <system.web>D. <html>答案:D9. 中用于处理Web服务请求的类是:A. WebFormB. WebHandlerC. WebControlD. WebPage答案:B10. 在中,用于实现分页功能的控件是:A. DataListB. GridViewC. RepeaterD. ListView答案:B二、填空题(每题2分,共20分)1. 应用程序的生命周期包括________、________、________、________和________。

asp.net介绍

asp.net介绍

介绍题外话:去年⾄今年以来,陆续写过⼀些原创的⽂章了,很多是对原来所做项⽬的总结。

所以并不是很系统很全⾯,都是针对某个知识点或者某个具体应⽤写的,有些朋友建议我把⾃⼰的体会写成⼀个系统的,这次算是⼀个尝试吧,写得不好的地⽅请⼤家尽量抛西红柿不要丢砖头。

之所以把这个系列叫做《夜话》,是有⼀些原因的,某不厌酒喜茶,酒越喝越糊涂,茶喝多了也仍然能保持清醒。

⽩天很忙,所以每天回到家之后我会沏⼀壶茶,边喝茶边看书,偶有⼼得体会就会⽤⽂字记录下来,过⼀段时间之后再将这些⽂字整理⼀下,觉得语句还算通畅的就发表在博客上了。

这个关于系列的⽂章将会都在晚上完成,所以我叫它《夜话》。

这个系列偏重于实际于开发实战中的理论和经验⽅⾯的介绍。

本系列⽂章中会⽤到Macromedia Dreamweaver 8中⽂版、Microsoft Visual Studio 2005中⽂版和Microsoft SQL Server 2005中⽂版,请先安装好相关软件。

好了,开始我们的正题。

在今天我主要要介绍的有如下知识点:XHTML语⾔静态⽹页动态⽹页WEB服务器开发的预备知识另外在看本节时,我可能会⽤到Macromedia Dreamweaver 8中⽂版,如果有条件,在⾃⼰的电脑上安装⼀个会获得更好的体验。

XHTML语⾔在⽹页开发的早期,基本上都是使⽤HTML语⾔开发的,它因为语法要求⽐较松散,虽然对开发者来说⽐较⽅便,但是机器处理起来⽐较困难,所以在HTML的基础上增加了XML的要求,这就形成了XHTML语⾔。

XHTML说⽩了就是符合XML标准的HTML语⾔。

当前版本的Macromedia Dreamweaver和Microsoft Visual Studio都⽀持XHTML开发。

以下是Dreamweaver创建的空HTML页⾯:以下是Microsoft Visual Studio2005创建的空⽩aspx页⾯:注意⽤红线标出的部分,上⾯的表⽰我们创建的是符合XHTML标准的页⾯。

ASP NET题目大全

ASP NET题目大全

选择1.静态网页文件的后缀是CA.asp B.aspx C.htm D.jsp2.在.NET中CLS(Commom Language Specification)的作用是DA.存储代码B.防止病毒C.源程序跨平台D.对语言进行规范3.在中源程序代码先被生成中间代码(IL或MSIL),然后再转变成各个CPU需要的代码,目的是C的需要A.提高效率B.保证安全C.源程序跨平台D.易识别4..NET与XML紧密结合最大好处是BA.代码易于理解B.跨平台传送数据C.减少存储空间D.代码安全5.App_Code目录用来放置中间层的BA.专用数据库文件B.共享文件C.被保护的文件D.代码文件6.App_Data目录用来放置AA.专用数据库文件B.共享文件C.被保护的文件D.代码文件7.文件系统网站适合学习使用,因为DA.不要安装IIS B.网站允许放置在任意目录下C.能够进行单独调试D.A+B8.在网站中,路径通常有A种表示方式,它们分别是()A.3绝对路径根目录相对路径文档目录相对路径B.2绝对路径根目录相对路径C.3绝对路径根目录绝对路径文档目录相对路径D.2绝对路径根目录绝对路径9.在HTML中,超链接由B标记定义A.<p>B.<a>C.<img>D.<meta>10.下面关于绝对路径的说法,正确的是DA.绝对路径是被连接文档的完整URL,不包括使用的传输协议B.使用绝对路径需要考虑源文件的位置C.在绝对路径中,如果目标文件被移动,则链接同样可用D.创建外部链接时,必须使用绝对路径11.HTML<a name=”NAME”></a>表示DA.创建一个超链接B.创建一个自动发送电子邮件的链接C.创建一个位于文档内部的链接点D.创建一个指向位于文档内部的链接点12.下面不是HTML中表格基本组成部分CA.表行B.表列C.表框D.表题13.在网页中可以支持的图像格式是DA.PSD B.PSP C.BMP D.GIF,PNG,JPEG14.下面几个图形控件中,不能执行鼠标单击事件的控件是B。

WinServer2003,IIS6.0,aspx文件总提示404错误

WinServer2003,IIS6.0,aspx文件总提示404错误

WinServer2003,IIS6.0,aspx文件总提示404错误为了针对恶意用户和攻击者采取更强的主动措施,在默认情况下,没有将 IIS 安装到Microsoft Windows Server 2003 家族的成员上。

而且,最初安装 IIS 时,该服务在高度安全和“锁定”的模式下安装。

在默认情况下,IIS 只为静态内容提供服务-即,ASP、、在服务器端的包含文件、WebDAV 发布和FrontPage? Server Extensions 等功能只有在启用时才工作。

如果您在安装IIS 之后未启用该功能,则IIS 返回一个404 错误。

您可以为动态内容提供服务,并通过IIS 管理器中的Web 服务扩展节点启用这些功能。

Windows Server 2003 家族通过 和 IIS 集成来提供增强的开发环境。

识别大多数 ASP 代码,同时提供更多的功能来创建企业级Web 应用程序,该应用程序可作为Microsoft .NET Framework 的一部分来工作。

使用 允许您充分利用公共语言运行库的功能,如类型安全、继承、语言互操作性和版本控制。

IIS 6.0 还为最新的 Web 标准(包括 XML、SOAP 和 Internet 协议版本6.0)提供支持。

这样造成大家以为在2003上就可直接运行 文件.就出现http://localhost连接不上,在iis里浏览网页也打不开,好象凡是要连接到http://localhost的网页都打不开,aspx文件总提示404错误,而其它的页面可以打开,这说明没有注册文件(自己认为). 自己找了网上的办法,但都没有解决,比较郁闷. 于是到Framework文件夹下看了所以文件发现了aspnet_regiis.exe 这个东东. 原来 Aspnet_regiis.exe 是 IIS 注册工具. 当您在单个计算机上并行执行多个版本的 .NET Framework 时,脚本映射到 应用程序的 ISAPI 版本将确定该应用程序使用的公共语言运行库版本。

(完整word版)ASPNET基础知识

(完整word版)ASPNET基础知识

1。

ASP。

NET的两种编码方式是什么,什么是代码内嵌,什么是代码后置?Web页面的父类是谁?代码内嵌和代码后置。

代码内嵌把业务逻辑编码和显示逻辑编码交叉使用。

代码后置式业务逻辑代码和显示逻辑代码分开使用。

system。

web.ui。

page2.Web控件的AutoPostBack属性的作用是什么?控件的值改变后是否和服务器进行交互(自动回传)3。

验证服务器控件有哪些,他们有哪些常用的属性,ControlToValidate属性的作用是什么?有哪两种服务器控件?RequiredFieldValidator:controltovalidate(验证的控件ID,共有的属性),text,ErrorMessage||||(dropdownlist控件验证时InitialValue属性是如果用户没有改变初始值,会验证失败)CompareValidator:controltocompare(要进行对比的控件),type(比较类型设置),operator(比较运算符,默认为等于),ValueToCompare(进行比较的值)RangeValidator:type(验证类型(5种)),MaximumValue(最大值),MinimumValue(最小值)(包括上下限)RegularExpressionValidator:ValidationExpression(设置要匹配的正则表达式)ValidationSummary:showMessageBox(是否显示弹出的提示消息),ShowSummary(是否显示报告内容)HTML服务器控件和web服务器控件4。

什么是Session,如何进行Session的读写操作,使用什么方法可以及时释放Session?Session 是用于保持状态的对象.Session 允许通过将对象存储在 Web服务器的内存中在整个用户会话过程中保持任何对象.通过键值对的方式进行读写;clear()和abandon()方法5.运行ASP。

《ASPNET动态网站开发教程(第三版)》各章习题参考答案

《ASPNET动态网站开发教程(第三版)》各章习题参考答案
}
}
8.代码如下:
using System;
class Test6
{
public static voidMain()
{
string str = "";
while (str.Length <= 3)
{
Console.Write("请输入一个长度大于3的字符串:");
str = Console.ReadLine();
{
Console.WriteLine(arr[j]);
}
}
}

1.答:
(1)用户通过客户端浏览器请求页面,页面第一次运行。如果程序员通过编程让它执行初步处理,如对页面进行初始化操作等,可以在Page_load事件中进行处理。
(2)Web服务器在其硬盘中定位所请求的页面。
(3)如果Web页面的扩展名为.aspx,就把这个文件交给aspnet-isapi.dll进行处理。如果以前没有执行过这个程序,那么就由CLR编译并执行,得到纯HTML结果;如果已经执行过这个程序,那么就直接执行编译好的程序并得到纯HTML结果。

1.答:HTML表单是静态网页中定义的表单,只在浏览器端运行,用于向服务器提交用户的请求。WEB表单是中的表单,是在服务器上运行的。WEB表单也是用<Form>标记定义的。WEB表单标记中有一个重要的属性:Runat=”Server”。正是这个属性使WEB表单与HTML表单有了本质的不同。
2.HTML服务器控件和WEB服务器控件都是从普通HTML发展过来的,只要给普通HTML代码添加id和runat=server属性就变成了HTML服务器控件,WEB服务器控件是.net提供的一套全新的控件,它的设计合理使用更简便,但是目前还没有和HTML完全一一对应。推荐使用WEB服务器控件。

ASP.NET编程中的十大技巧

ASP.NET编程中的十大技巧

本篇文件中,我们将讨论编程人员在使用开发应用程序时需要注意的10个技巧,这些技巧涉及从缺省的控件、表单名的改变到StringBuilder类的使用,有助于编程人员能够尽快地适应.NET环境。

1、在使用Visual Studio .NET时,除直接或非引用的对象外,不要使用缺省的名字。

.NET带来的好处之一是所有的源代码和配置文件都是纯文本文件,能够使用Notepad或Word Pad等任意的文本编辑器进行编辑。

如果不愿意,我们并非一定要使用Visual Studio .NET作为集成开发环境。

但使用了Visual Studio .NET,我们可以在Windows文件管理器中看到文件,或在Visual Studio .NET之外从文本编辑器中浏览文件的内容。

使用Visual Studio .NET作为集成开发环境有许多好处,其中最显着的好处是它极大地提高了生产效率。

使用Visual Studio. NET,我们能够在付出较小代价的情况下更快地开发软件。

作为集成开发环境一部分的IntelliSense提供自动的代码完成、在输入方法或函数时提供动态帮助、语法错误的实时提示,以及其他能够提高生产效率的功能。

象其他复杂的工具那样,在学会如何充分发挥它的作用和掌握其“习性”前,Visual Studio .NET也会使我们产生一种挫折感。

有时,它象一个难以了解的黑盒子,会生成大量的文件和许多无用的代码。

Visual Studio .NET的一个功能是,无论是类、控件或表单中的对象,它都能够为新对象提供缺省名字。

例如,如果我们创建了一个新的 Web Application,其缺省的名字将是WebApplication1。

我们可以在“新工程”对话框中方便地改变该应用的名字,但同时改变的只是该应用程序的名字空间的名字及其所在的虚拟目录,源代码文件的缺省名字仍然是WebForm1.aspx和WebForm1.aspx.cs(C#工程)或WebForm1.aspx.vb(工程)。

ASP试题与答案

ASP试题与答案

ASP试题与答案一、单选题(共54题,每题1分,共54分)1.对于视图状态说法正确的是()。

A、视图状态可以跨页面访问共享B、视图状态在服务器内存中保持数据C、禁用视图状态对系统功能没有任何影响D、视图状态是基于事件编程功能的重要技术基础正确答案:D2.插入水平线使用标记,其()属性设置水平线的宽度A、widthB、sizeC、colorD、align正确答案:A3.关于HTML描述正确的是A、.NET Framwork的一部分B、网站集成开发环境C、编程语言D、网页标准语言正确答案:D4.服务器控件中的按钮分为()种:A、2B、6C、3D、1正确答案:C5.“ContentPlaceHolder”是()中的标记A、母板页B、普通网页C、内容页D、Word文档正确答案:A6.关于描述正确的是A、网站集成开发环境B、.NET Framwork的一部分C、编程语言D、网页标准语言正确答案:B7.table标记中的属性 bgcolorA、定义表格的高度B、设置表格边框的粗细C、设置表格的背景色D、定义表格的宽度正确答案:C8.Button控件是A、文本框控件B、标签控件C、按钮控件D、超链接控件正确答案:C9.网站的数据库文件应该存放在哪个文件夹A、App_DataB、App_CodeC、App_ThemesD、网站根文件夹正确答案:A10.网页标准语言是A、C#语言B、C语言C、HTML语言D、CSS正确答案:C11.单个页面数据保持的状态管理方式是()。

A、视图状态B、Application状态C、会话状态D、Cookie状态正确答案:A12.FooterRow 是GridView控件的的A、数据行B、标题行C、脚注行D、分页导航行正确答案:C13.TextBox控件是A、文本框控件B、标签控件C、按钮控件D、超链接控件正确答案:A14.TextBox控件常常用来A、接收用户输入的数据B、显示提示内容C、激发事件,提交网页D、链接到其他页面正确答案:A15.关于DataSouce控件A、是数据源控件B、是数据显示控件C、是用户自定义控件D、是Html控件正确答案:A16.换行标记是A、br标记B、p标记C、hr标记D、hn标记正确答案:A17.GridView控件任务按钮中没有“启用编辑”等复选框,这可能是因为:A、GridView控件属性设置错误B、GridView控件AllowEdit属性应设置为trueC、GridView控件AutoGenerateEditButton属性应设置为trueD、其数据源应该配置Update命令正确答案:D18.要想让DatailsView控件显示数据,一般要配置该控件的:A、FontB、defalutModeC、数据源SQlDataSourceD、width正确答案:C19.sqlDataSource控件删除操作执行前引发的事件是A、DetelingB、DeletedC、InsertingD、Inserted正确答案:A20.HeaderRow是GridView控件的的A、数据行B、标题行C、分页导航行D、脚注行正确答案:B21.FileUpload控件代表所上传文件对象的属性是A、TextB、PostedFileC、nameD、SaveAs正确答案:B22.sqlDataSource控件选择操作执行后引发的事件是A、SelectingB、SelectedC、UpdatingD、Updated正确答案:B23.VS 2010打开网站后,没有“表”菜单,原因最可能是:A、VS 2010安装不正确B、“工具”菜单中的“选项”设置不对C、电脑中有病毒D、当前子窗口不是“设计”视图窗口正确答案:D24.table中的单元格标记是:A、titleB、trC、tdD、hn正确答案:C25.下列服务器控件中被单击,设置其被单击时浏览器回发网页A、ButtonB、LinkButtonC、ImageButtonD、Image正确答案:B26.“查询生成器”对话框,不能完成的任务是:A、修改SQL语句B、设置参数源C、进行多表查询D、执行SQL语句正确答案:B27.表示查询字符串中的id参数值的代码是A、Request.Form["TextBoxClient"]B、QueryString["id"]C、Request.SaveAs();D、Response.Write正确答案:B28."在网站中,同一程序段的Application["Counter"]和Application["counter"],大小写不同,是()。

ASP.NET对路径xxxxx的访问被拒绝的解决方法小结

ASP.NET对路径xxxxx的访问被拒绝的解决方法小结

对路径xxxxx的访问被拒绝的解决⽅法⼩结在windows 2003下,在运⾏web应⽤程序的时候出现⼀下错误:服务器⽆法处理请求,-->对路径“C:/temp/mytest.txt”的访问拒绝说明: 执⾏当前 Web 请求期间,出现未处理的异常。

请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 对路径“D:/temp1/MyTest.txt”的访问被拒绝。

在需要进⾏读写操作的⽬录下添加Network Service这个帐号,由于在iis 6.0中,默认的应⽤程序池中的标⽰⽤的是Network Service,所以在进程中是使⽤Network Service这个帐号运⾏来运⾏w3wp.exe进程,⽽当我们在运⾏VS 2003的时候需要对某⼀个⽬录下进⾏读写操作,看了⼀下该⽂件夹,发现没有Network Service,添加上该账号,同时选上FULL CONTROL,问题解决。

具体过程:对该⽂件夹按右键--属性--安全--添加--⾼级--⽴即查找--在“搜索结果”下选“NETWORK SERVICE”--确定--确定--确定在IIS6.0中的默认应⽤程序池-->属性-->标⽰中把Net Service改成Local System该问题也可以解决。

什么是应⽤程序池呢?这是微软的⼀个全新概念:应⽤程序池是将⼀个或多个应⽤程序链接到⼀个或多个⼯作进程集合的配置。

因为应⽤程序池中的应⽤程序与其他应⽤程序被⼯作进程边界分隔,所以某个应⽤程序池中的应⽤程序不会受到其他应⽤程序池中应⽤程序所产⽣的问题的影响。

Windows 2003同时⽀持两种⼯作模式,默认为ISS 6.0⼯作进程隔离模式。

⼯作进程隔离模式防⽌⼀个应⽤程序或站点停⽌了⽽影响另⼀个应⽤程序或站点,⼤⼤增强了IIS的可靠性。

那么如何设置两种⼯作模式呢? 启动IIS管理器,右击⽹站,选择“属性”,打开属性对话框(图1)。

ASP.NETCore应用的错误处理[1]:三种呈现错误页面的方式

ASP.NETCore应用的错误处理[1]:三种呈现错误页面的方式

Core应⽤的错误处理[1]:三种呈现错误页⾯的⽅式由于 Core应⽤是⼀个同时处理多个请求的服务器应⽤,所以在处理某个请求过程中抛出的异常并不会导致整个应⽤的终⽌。

出于安全⽅⾯的考量,为了避免敏感信息的外泄,客户端在默认的情况下并不会得到详细的出错信息,这⽆疑会在开发环境下增加查错纠错的难度。

对于⽣产环境来说,我们也希望最终⽤户能够根据具体的错误类型得到具有针对性并且友好的错误消息。

Core提供了相应的中间件帮助我们将定制化的错误信息呈现出来,这些中间件都定义在“Microsoft.AspNetCore.Diagnostics”这个NuGet包中。

在着重介绍这些中间件之前,我们照理演⽰⼏个简单的实例让读者朋友们对这些中间件的作⽤有⼀个⼤概的了解。

[本⽂已经同步到《》之中]⽬录⼀、显⽰开发者异常页⾯⼆、显⽰定制异常页⾯三、针对响应状态码定制错误页⾯⼀、显⽰开发者异常页⾯⼀般情况下,如果 Core在处理某个请求时出现异常,它⼀般会返回⼀个状态码为“500 Internal Server Error”的响应。

为了避免⼀些敏感信息的外泄,详细的错误信息并不会随着响应发送给客户端,所以客户端只会得到⼀个很⼀般化的错误消息。

以如下这个程序为例,服务端在处理每个请求时都会抛出⼀个类型为InvalidOperationException的异常。

1:public class Program2: {3:public static void Main()4: {5:new WebHostBuilder()6: .UseKestrel()7: .Configure(app => app.Run(context => Task.FromException(new InvalidOperationException("Manually thrown exception..."))))8: .Build()9: .Run();10: }11: }当我们利⽤浏览器访问这个应⽤的时候,总是会得到如下图所⽰的这个错误页⾯。

Http Handler 介绍

Http Handler 介绍

Http Handler 介绍引言在Part.1 Http请求处理流程一文中,我们了解了Http请求的处理过程以及其它一些运作原理。

我们知道Http管道中有两个可用接口,一个是IHttpHandler,一个是IHttpModule,但在Part.1中,我并没有详细讲述如何对它们进行编程,只是轻描淡写地一笔带过。

所谓学以致用,前面已经介绍了不少概念和原理。

在本文中,我们通过几个范例来了解IHttpHandler,看看掌握这些原理的实际用途。

IHttpHandler 概述可能和我一样,很多开发人员都有过Asp的背景,以至于我们在开发程序的时候,通常都是在“页面级”上思考,也就是说我们现在正在做的这个页面应该有什么样的功能,是进行一个问卷调查还是一个数据库查询等等。

而很少在“请求级”思考,考虑有没有办法来通过编码的方式来操控一个Http请求。

实际上,Framework提供了一系列的接口和类,允许你对于Http请求进行编程,而实现这一操作的一个主要的接口,就是IHttpHandler(另一个是IHttpModule)。

应该还记得第一节中我们提到过ISAPI,它根据文件名后缀把不同的请求转交给不同的处理程序。

但是仔细看看就会发现:几乎一大半的文件都交给aspnet_isapi.dll 去处理了。

很明显,aspnet_isapi.dll 不可能对每种文件采用同一种方式处理,那么aspnet_isapi.dll 是如何更进一步处理不同的文件,交由谁去处理呢?为了搞清楚这个问题,我们需要打开机器上C:\WINDOWS\\Framework\v2.0.50727\CONFIG\ 目录下的web.config 文件。

NOTE:我查阅了很多资料,都说是在machine.config 中,但实际上v2.0.50727 下的machine.config中httpHandlers结点是这样的:<httpHandlers />,并没有给出详细的处理程序,在Web.config中才能看到。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

构架Part. 1 – Http请求处理流程张子阳jimmy_dev@导读在写本系列文章的过程中,我遇到了很大的困惑:在我准备讲述问题A的时候,我发现需要先解释问题B;当我考虑如何讲解问题B的时候,又发现如果对问题C不够清楚,很难较好地理解问题B。

好吧,事已至此,我决定从问题C开始着手。

不幸的是… 我已经跑题了。

阅读的过程中,你可能会觉得文中有的内容看上去与正在讨论的内容关系不大,这时候请你耐心地读下去,它往往是你理解后面问题的关键。

这将是一次漫长的旅途,如果你现在已经整装待发,那我们就上路吧!NOTE:文章中的插图是在 IIS 6.0 和 Windows Server2003 下截取的,如果与 IIS 5.0的区别大到足以产生误导,请反馈给我。

引言我查阅过不少的书籍,发现大多数作者都是站在一个比较高的层次上讲解。

他们耐心、细致地告诉你如何一步步拖放控件、设置控件属性、编写CodeBehind代码,以实现某个特定的功能。

这种做法,实际上是回答了“如何去做”的问题,却没有回答“为什么可以这样做”的问题。

尽管我很推崇 悉江华 先生的《圣殿祭祀的开发详解》一书,但当我翻看了一下其对角色(Role) 和 用户(Member)的讲解时,我决定跳过去直接读后面的章节。

因为我发现他也随了大流,对这部分的讲解停留在“如何去做”的层面上。

我相信像 悉先生 这样的牛人是不可能不了解底层运作原理的,仅仅是因为那本书原本就已经很厚了吧。

当你按“如何去做”所讲解的内容去开发程序的时候,对于你的用户,你仍是一名程序员;但对于实现了MembershipProvider 和 RoleProvider 抽象类的微软开发人员来说,你已经成了他们的一个用户。

NOTE:我既不反对一些作者只讲解“如何去做”,也不反对你只学“如何去做”,这样也有它的好处,就是可以快速开发。

我只是建议多掌握一点底层知识,对一些问题会有更好的理解。

希望通过这一系列文章的讲解,可以让你更好的理解的安全机制和身份验证及权限管理的底层运作原理。

Http请求处理流程概述思考“为什么在地址栏输入就可以看到张子阳的个人空间?”,类似于思考“为什么苹果是往地上掉不是往天上飘?”。

对于普通访问者来说,这就像每天太阳东边升起西边落下一样是理所当然的;对于很多程序员来说,认为这个与己无关,不过是系统管理员或者网管员的责任。

毕竟,IIS是 Windows 的一个组件,又不是 的一个组成部分。

而实际上,从你轻拍回车到页面呈现在你眼前的十分之一秒内,IIS和.Net Framework已经做了大量的幕后工作。

你可能觉得了解这些幕后工作是如何运作的无关紧要,作为程序员的你只要保证开发出的程序可以高效地运行就可以了。

然而,在开发过程中,你却发现常常需要使用诸如 HttpContext 这样的类。

这个时候,你可曾思考过这些类的构成和类的实体是如何创建的?你可能简单地回答:HttpContext代表当前请求的一个上下文环境。

可你又知道IIS 、Framework、 是如何协同工作处理每个Http请求、如何区分不同的请求、IIS、Framework、三者之间的数据如何流动么?回答上面这些问题,首先需要了解IIS是如何处理页面请求的,这也是理解 Form验证模式和Windows 验证模式 的基础。

Http请求刚刚到达服务器的时候当服务器接收到一个 Http请求的时候,IIS 首先需要决定如何去处理这个请求(NOTE:服务器处理一个.htm页面和一个.aspx页面肯定是不一样的么)。

那IIS依据什么去处理呢?―― 根据文件的后缀名。

服务器获取所请求的页面(NOTE:也可以是文件,比如 jimmy.jpg)的后缀名以后,接下来会在服务器端寻找可以处理这类后缀名的应用程序,如果IIS找不到可以处理此类文件的应用程序,并且这个文件也没有受到服务器端的保护(NOTE:一个受保护的例子就是 App_Code中的文件,一个不受保护的例子就是你的js脚本),那么IIS将直接把这个文件返还给客户端。

能够处理各种后缀名的应用程序,通常被称为 ISAPI 应用程序(NOTE:Internet Server Application Programe Interface,互联网服务器应用程序接口)。

虽然这 ISAPI 听上去还挺气派,也算是“应用程序”呢,但仔细看看它的全称就明白了:它实际上只是一个接口,起到一个代理的作用,它的主要工作是映射所请求的页面(文件) 和 与此后缀名相对应的实际的处理程序。

让我们更进一步地看一下 ISAPI ,看看它到底是什么样子,请按下面的步骤进行:1.打开IIS。

2.选择随意一个站点,鼠标右键,“属性”。

3.选择“主目录”选项卡。

4.选择“配置”。

你应该会看到如下的画面:图1. 应用程序配置很清楚地就可以看到,所有IIS所能处理,或者叫 ISAPI 所提供代理服务的 文件类型 及其相对应的实际的后台处理程序都在这里清楚地列出来了。

我们找到 .aspx 的应用处理程序,然后点“编辑”,会出现下面的画面:图2. 编辑.aspx文件的处理程序一路看到这里,可以看出,所有的.aspx文件实际上都是由 aspnet_isapi.dll 这个程序来处理的,当IIS把对于.aspx页面的请求提交给了aspnet_isapi.dll以后,它就不再关心这个请求随后是如何处理的了。

这里需要注意两点:z当你修改“限制为”后,可以限制页面(文件)只能以某种特定方式访问。

z“确认文件是否存在”是实现 URL 地址映射的关键选项,我以后会专门讲述。

理解宿主环境(Hosting)从本质上讲, 主要是由一系列的类组成,这些类的主要目的就是将Http请求转变为对客户端的响应。

HttpRuntime类是的一个主要入口,它有一个称作 ProcessRequest 的方法,这个方法以一个 HttpWorkerRequest 类作为参数。

HttpRuntime 类几乎包含着关于单个 Http请求的所有信息:所请求的文件、服务器端变量、QueryString、Http 头信息 等等。

使用这些信息来加载、运行正确的文件,并且将这个请求转换到输出流中,一般来说,也就是HTML页面。

NOTE:二般来说,也可以是张图片。

当 Web.config文件的内容发生改变 或者 .aspx文件发生变动的时候,为了能够卸载运行在同一个进程中的应用程序(NOTE:卸载也是为了重新加载),Http请求被分放在相互隔离的应用程序域中。

NOTE:可能你以前就听过应用程序域,但是不了解怎么回事,应用程序域就是 AppDomain。

对于IIS来说,它依赖一个叫做 HTTP.SYS 的内置驱动程序来监听来自外部的 HTTP请求。

在操作系统启动的时候,IIS首先在HTTP.SYS中注册自己的虚拟路径。

NOTE:实际上相当于告诉HTTP.SYS哪些URL是可以访问的,哪些是不可以访问的。

举个简单的例子:为什么你访问不存在的文件会出现 404 错误呢?就是在这一步确定的。

如果请求的是一个可访问的URL,HTTP.SYS会将这个请求交给 IIS 工作者进程。

NOTE:IIS6.0中叫做 w3wq.exe,IIS5.0中叫做 aspnet_wp.exe。

每个工作者进程都有一个身份标识 以及 一系列的可选性能参数。

NOTE:可选性能参数,是指诸如 回收机制的设置、超时时间设置 等等。

接下来进行的事情就是上一章节讲述的 ISAPI 了。

NOTE:这部分的内容相关性比较强,为了让大家好理解,我最后还是决定把 ISAPI 放到前面了,可能全系列完成的时候会再调整吧。

除了映射文件与其对应的处理程序以外,ISAPI 还需要做一些其他的工作:1.从HTTP.SYS中获取当前的Httq请求信息,并且将这些信息保存到 HttpWorkerRequest类中。

2.在相互隔离的应用程序域AppDomain中加载HttpRuntime。

3.调用 HttpRuntime的ProcessRequest方法。

接下来才是程序员通常编写的代码所完成的工作了,然后,IIS 接收返回的数据流,并重新返还给 HTTP.SYS,最后,HTTP.SYS 再将这些数据返回给客户端浏览器。

OK,现在你看到张子阳的空间主页了。

图 的宿主环境理解管道(Pipeline)在前面两章中,我们在一个相对比较低的层次上讨论了从发出Http请求到看到浏览器输出这转瞬即逝的十分之一秒内IIS和 Framework 所做的事情。

但是我们忽略了一个细节:程序员编写的代码是如何在这一过程中衔接的,本章我们就来看看这个问题。

当Http请求进入 Runtime以后,它的管道由托管模块(NOTE:Managed Modules)和处理程序(NOTE:Handlers)组成,并且由管道来处理这个 Http请求。

图4. 理解 Http 管道我们按编号来看一下这幅图中的数据是如何流动的。

1. HttpRuntime将Http请求转交给 HttpApplication,HttpApplication代表着程序员创建的Web应用程序。

HttpApplication创建针对此Http请求的 HttpContext对象,这些对象包含了关于此请求的诸多其他对象,主要是HttpRequest、HttpResponse、HttpSessionState等。

这些对象在程序中可以通过Page类或者Context类进行访问。

、2. 接下来Http请求通过一系列Module,这些Module对Http请求具有完全的控制权。

这些Module可以做一些执行某个实际工作前的事情。

3. Http请求经过所有的Module之后,它会被HttpHandler处理。

在这一步,执行实际的一些操作,通常也就是.aspx页面所完成的业务逻辑。

可能你会觉得在创建.aspx页面并没有体会到这一过程,但是,你一定知道,.aspx 页面继承自Page类,我们看一下Page类的签名:public class Page : TemplateControl, IHttpHandler{代码省略//}可以看到,Page类实现了IHttpHandler接口,HttpHandler也是Http请求处理的最底层。

4.HttpHandler处理完以后,Http请求再一次回到Module,此时Module可以做一些某个工作已经完成了之后的事情。

NOTE:注意我用红色标识的字,然后回想一下: 中是不是有众多的 Inserting 、Inserted 之类成对的事件?其实,这里讲述的就是为什么可以将一个Insert操作分成前后两部分,然后再分别进行事件拦截的幕后原理。

相关文档
最新文档