绝大多数的人只熟悉高层的框架如: WebForms 和 WebServices –这些都在ASP.NET层次结构在最高层。
这篇文章的资料收集整理自各种微软公开的文档,通过比较 IIS5、IIS6、IIS7 这三代 IIS 对请求的处理过程, 让我们熟悉 ASP.NET的底层机制 并对请求(request)是怎么从Web 服务器 传送到ASP.NET运行时有所了解。通过对底层机制的了解,可以让我们对 ASP.net 有更深的理解。
IIS 5 的 ASP.net 请求处理过程
对图的解释:
IIS 5.x 一个显著的特征就是 Web server 和真正的 ASP.NET Application 的分离。作为 Web Server 的IIS运行在一个名为 InetInfo.exe 的进程上,InetInfo.exe 是一个Native Executive,并不是一个托管的程序,而我们真正的 ASP.NET Application 则是运行在一个叫做 aspnet_wp 的 Worker Process 上面,在该进程初始化的时候会加载CLR,所以这是一个托管的环境。

ISAPI: 指能够处理各种后缀名的应用程序。 ISAPI 是下面单词的简写 :Internet Server Application Programe Interface,互联网服务器应用程序接口。
IIS 5 模式的特点:
IIS6 的 ASP.net 请求处理过程
对图的解释:
IIS 5.x 是通过 InetInfo.exe 监听 Request 并把Request分发到Work Process。换句话说,在IIS 5.x中对Request的监听和分发是在User Mode中进行,在IIS 6中,这种工作被移植到kernel Mode中进行,所有的这一切都是通过一个新的组件:http.sys 来负责。
注:为了避免用户应用程序访问或者修改关键的操作系统数据,windows提供了两种处理器访问模式:用户模式(User Mode)和内核模式(Kernel Mode)。一般地,用户程序运行在User mode下,而操作系统代码运行在Kernel Mode下。Kernel Mode的代码允许访问所有系统内存和所有CPU指令。
在User Mode下,http.sys接收到一个基于 aspx 的http request,然后它会根据IIS中的 Metabase 查看该基于该 Request 的 Application 属于哪个Application Pool, 如果该Application Pool不存在,则创建之。否则直接将 request 发到对应Application Pool 的 Queue中。
每个 Application Pool 对应着一个Worker Process:w3wp.exe,毫无疑问他是运行在User Mode下的。在IIS Metabase 中维护着 Application Pool 和worker process的Mapping。WAS(Web Administrative service)根据这样一个mapping,将存在于某个Application Pool Queue的request 传递到对应的worker process(如果没有,就创建这样一个进程)。在 worker process 初始化的时候,加载ASP.NET ISAPI,ASP.NET ISAPI 进而加载CLR。最后的流程就和IIS 5.x一样了:通过AppManagerAppDomainfactory 的 Create方法为 Application 创建一个Application Domain;通过 ISAPIRuntime 的 ProcessRequest处理Request,进而将流程进入到ASP.NET Http Runtime Pipeline。
当前1/3页23下一页
asp如何在服务器端判断提交页面是否为首次打开?
参考一下。这种情况一般可以通过传递一个变量来判断,这样不依托IIS类型,可以跨平台使用.在页面开始处设置下面内容op=Lcase((Request(op)))如果页面包含很多具体内容页面可在这里判断下当直接输入如后出现的界面If op= then 强制初始化为数据添加add页面op=addEnd If根据OP判断应显示的页面Select Case opCase add你添加记录的表单页面设置表单action=?op=addokCase addok数据获取/处理页面内容Case Else 这个用来过滤非法的op输入 错误的数据来源或提交方式 Select
404notfound网站怎么进入?
404指的是请求失败,请求所希望得到的资源在服务器上未被发现。 至于是什么原因未被发现,可能需要进一步查询。 由于网页内容路径改变而导致404 not found时,我们可在IIS中定义404错误指向一个动态页面,在页面里面使用301永久重定向跳转到新的地址,此时服务器返回301状态码。
上网后,在浏览某些站点时会遇到各种不同的连接错误。 这种错误一般是由于网站发生故障或者你没有浏览权限所引起的。 最常见的就是404 NOT FOUND错误信息,主要是因为IE不能找到你所要求的网页文件,该文件可能根本不存在或者已经被转移到其他地方了。
404 Not Found”中的“404”官方名称是HTTP状态码(HTTP StatusCode),是用来表示网页服务器 HTTP的响应状态。 3位数字代码的第一位代表了响应的状态,分为 5种状态,从 1xx到 5xx,分别代表网页响应继续处理、成功、重定向、客户端错误,以及服务器错误。
设计一个html文件,最后将404指向该html文件,此时页面将返回404状态码。 打开IIS管理器--点击要设置自定义404的网站的属性--点击自定义错误选项--选中404页--选中并打开编辑属性--设置成URL--URL里填写“/”--按确定退出再把做好的页面上传到网站根目录下。 此处在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码。
asp中request用法
(name)[(key)] key是可选的,类似于Dictionary对象,你可以理解成一个元素带名称的数组,key就是元素的名称。 (Parameter)[(Index)]相同名称的表单元素将组成一个集合,index就是某个元素在集合里的索引。
发表评论