首页 新闻 赞助 找找看

如何理解ASP管线中HttpHandler处理不同后缀的文件?

0
[已解决问题] 解决于 2016-04-23 20:44

没有豆了。但是想问问题.......纠结了很久了,大神们能不能指点一下;

下面是我在博客园看到的一张图片。说的是---》请求到达服务器的时候,ISAPI会根据请求文件的后缀,将请求分发给不同的扩展程序去处理  .aspx就交给asp.net_isapi.dll处理

这算不算是一种请求过滤机制?  

1、那么既然可以根据后缀来分发请求,那么静态页面 .html  .htm还有一些CSS样式、js、图片交给哪儿个扩展去处理呢?

2、asp.net_isapi.dll只处理.aspx吗,asp.net_isapi.dll接收到请求的时候,把请求交给w3wp.exe,然后再交给HttpRuntime.....然后经过一堆东西的处理....创建HttpApplication对象,在这之后才开始初始化Module,如果asp.net_isapi.dll只处理.aspx,为什么我在Module中可以截获所有请求(包括请求静态页)

3、既然服务器已经根据文件后缀分发好了请求,那么HttpHandler还有必要根据文件后缀创建不同的实例去处理请求吗?

蔡先森的主页 蔡先森 | 初学一级 | 园豆:181
提问于:2016-03-09 12:32
< >
分享
最佳答案
0

1首先 iis 的页面分为2类 

a.按文件访问

b.按应用程序访问 所谓的配置后缀名 就是配置在程序访问的后缀名 

2.Ihttphandler 顾名思义 http的处理器 专门处理http的接口

打个比方来说 以前 web form 里面有2个典型的 httphandler ashx 和 aspx

而 ashx 是典型的 最初始的 httphandler

而 aspx 则是 在 httphandler里面 有一些其他的东西 例如:page_init page_load等等

 

3. 根据2可得知 实际上 httphandler只是处理请求的 而且可以根据不同的请求 调用不同的 httphandler

所以基于这点 为了扩展 实际上微软在配置文件里面 还有一些其他的扩展 专门让用户可以根据自己的喜好去配置 不同的后缀 执行 不同的httphandler (这里我记的不是很清楚 需要去查 但是大致就是这意思)

 

 

奖励园豆:5
小眼睛老鼠 | 老鸟四级 |园豆:2731 | 2016-03-09 13:41

那么请求.aspx页面的时候算是程序访问吗?像是.html  .js  .jpg这种是直接由IIS返回给客户端呢 还是经过Module 和HttpHandler呢?

蔡先森 | 园豆:181 (初学一级) | 2016-03-09 14:35

@哆啦的哆啦多: 

aspx当然算 只要是经过gloable 文件的 begin_request这个事件的 都是经过程序的

 

如果不配置 html 就是典型的 文件访问 直接返回 客户端 

如果配置了 哪怕是 mvc 没有后缀 也可以访问应用程序

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-03-09 14:59

@小眼睛老鼠: 这里说的配置是配置httpHandler 吗  配置不用后缀的文件交给不同的实例去处理吗

蔡先森 | 园豆:181 (初学一级) | 2016-03-09 15:02

@哆啦的哆啦多:  首先配置 有2类  按照先后顺序

第一类 配置 iis 让相关后缀访问 已应用程序的方式处理  就是配置后缀名的那个 (例如伪静态 不就是html后缀么 如果不配置 直接文件访问 就没程序的事情了)

 

第二类 在web.config中 因为外部的请求进来了 是访问 ashx 还是 aspx 是使用 基本的Ihttphandle 还是使用自己的 myHttphandle 

小眼睛老鼠 | 园豆:2731 (老鸟四级) | 2016-03-09 15:04

@小眼睛老鼠: 嗯嗯  好  谢谢你

蔡先森 | 园豆:181 (初学一级) | 2016-03-09 15:18
其他回答(1)
0

1.iis自己处理了

2.老的iis处理机制需要你指定后缀的,默认情况下静态信息你httpmodule里面根本不会有感知

3.httphandle就是你page啊。

Daniel Cai | 园豆:10424 (专家六级) | 2016-03-09 13:06

嗯嗯  谢谢你

支持(0) 反对(0) 蔡先森 | 园豆:181 (初学一级) | 2016-03-09 15:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册