没有豆了。但是想问问题.......纠结了很久了,大神们能不能指点一下;
下面是我在博客园看到的一张图片。说的是---》请求到达服务器的时候,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还有必要根据文件后缀创建不同的实例去处理请求吗?
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 (这里我记的不是很清楚 需要去查 但是大致就是这意思)
那么请求.aspx页面的时候算是程序访问吗?像是.html .js .jpg这种是直接由IIS返回给客户端呢 还是经过Module 和HttpHandler呢?
@哆啦的哆啦多:
aspx当然算 只要是经过gloable 文件的 begin_request这个事件的 都是经过程序的
如果不配置 html 就是典型的 文件访问 直接返回 客户端
如果配置了 哪怕是 mvc 没有后缀 也可以访问应用程序
@小眼睛老鼠: 这里说的配置是配置httpHandler 吗 配置不用后缀的文件交给不同的实例去处理吗
@哆啦的哆啦多: 首先配置 有2类 按照先后顺序
第一类 配置 iis 让相关后缀访问 已应用程序的方式处理 就是配置后缀名的那个 (例如伪静态 不就是html后缀么 如果不配置 直接文件访问 就没程序的事情了)
第二类 在web.config中 因为外部的请求进来了 是访问 ashx 还是 aspx 是使用 基本的Ihttphandle 还是使用自己的 myHttphandle
@小眼睛老鼠: 嗯嗯 好 谢谢你
1.iis自己处理了
2.老的iis处理机制需要你指定后缀的,默认情况下静态信息你httpmodule里面根本不会有感知
3.httphandle就是你page啊。
嗯嗯 谢谢你