• HttpModule、HttpHandler-初识与区别
  • HttpModule、HttpHandler-IHttpModule(httpModules)不起作用的两个原因
  • HttpModule、HttpHandler-IHttpModule
    应用示例
  • HttpModule、HttpHandler-“一般处理程序(.ashx)”与“ASP.NET 处理程序”
  • HttpModule、HttpHandler-HttpHandler
    路由配置说明
  • HttpModule、HttpHandler-初识与区别
  • HttpModule、HttpHandler-IHttpModule(httpModules)不起作用的两个原因
  • HttpModule、HttpHandler-IHttpModule
    应用示例
  • HttpModule、HttpHandler-“一般处理程序(.ashx)”与“ASP.NET
    处理程序”
  • HttpModule、HttpHandler-HttpHandler
    路由配置说明
  • HttpModule、HttpHandler-初识与区别
  • HttpModule、HttpHandler-IHttpModule(httpModules)不起作用的两个原因
  • HttpModule、HttpHandler-IHttpModule
    应用示例
  • HttpModule、HttpHandler-“一般处理程序(.ashx)”与“ASP.NET
    处理程序”
  • HttpModule、HttpHandler-HttpHandler 路由配置说明



在 Visual Studio 中新建
Web 项时,可以看到两个比较类似的东西,一个是“一般处理程序”与“ASP.NET
处理程序”,这两个有什么区别呢?

HttpModule 中不能使用 Session 相关的,比如 httpContext.User 总为 null。

HttpModule 配置

爆大奖永利官网765me 1

HttpHandler 中可以使用 Session 相关的,比如 httpContext.User
是可以取到值的。

HttpModule 是个 .cs
文件,不能直接访问,是所有的请求都经过它处理,再走向后面的流程。所以只需要在
web.config/system.web/httpModules 或 web.config/system.webServer/modules
中配置上即可。比如:

的确很像

以上千一网络编辑注。

<system.web> <httpModules> <add name=”ItpowModule”
type=”com.itpow.ItpowModule”/> </httpModules>
</system.web> <system.webServer> <modules> <add
name=”ItpowModule” type=”com.itpow.ItpowModule”/> </modules>
</system.webServer>

因为它们都是继承自 IHttpHandler,初始代码也很相像。

通俗点讲

HttpHandler 配置

从文件名来说

HttpModule 倾向于拦截访问,比如你明明访问的是
1.jpg,我给你拦截了。

HttpHandler 中的“ASP.NET 处理程序”也是 .cs 文件,不能直接访问,需要在
web.config
中配置路由,而“一般处理程序(.ashx)”可以直接输入网址进行访问,也可以在
web.config 中配置路由。

“一般处理程序(.ashx)”有两个文件,分别是 xxx.ashx、xxx.ashx.cs。

HttpHandler 倾向于映射访问,比如它指定当访问 a.do 交由某某类处理,当访问
b.do 交由另外一个类处理。

具体在 web.config/system.web/httpHandlers 或
web.config/system.webServer/handlers 中配置,比如:

爆大奖永利官网765me,“ASP.NET 处理程序”只有一个文件,xxx.cs。

具体见了本连载的两个示例就清楚了。

<system.web> <httpHandlers> <add name=”ItpowHandler”
type=”com.itpow.ItpowHandler” path=”upload/*” verb=”GET”/>
</httpHandlers> </system.web> <system.webServer>
<handlers> <add name=”ItpowHandler”
type=”com.itpow.ItpowHandler” path=”upload/*” verb=”GET”/>
</handlers> </system.webServer>

从使用上来说

以上为千一网络编辑注,以下为网上转载。

路由说明:

“一般处理程序(.ashx)”更像 .aspx,它只是没有
HTML 布局文件,所以有其特殊的应用场景,比如做成投稿接口开放给第三方,当处理完投稿后,输出一个
XML 或 JSON 文本告诉其处理结果,而不是 HTML 文本。当然
.aspx 也能实现,用 Response.End() 提前结束,不让 HTML 输出来。不过
.ashx 更简洁。

在以前的 ASP 时候,当请求一个 *.asp 页面文件的时候,这个 HTTP
请求首先会被一个名为 inetinfo.exe 进程所截获,这个进程实际上就是 www
服务。截获之后它会将这个请求转交给 asp.dll 进程,这个进程就会解释这个
asp 页面,然后将解释后的数据流返回给客户端浏览器。其实 asp.dll
是一个依附在 IIS 的 ISAPI 文件,它负责了对诸如 ASP 文件,ASA
等文件的解释执行。

verb:一定要有,且内容要大写。

“ASP.NET 处理程序”更像 ASP.NET 模块,需要在
web.config 中注册,注册时我们可以自由指定路径,比如明明不存在
get.do 这个文件,我们可以注册出来,当用户访问
 的时候,实际上是交由我们的 ASP.NET 处理程序来执行的。

ASP.NET 的 HTTP 请求处理方法

path:不支持正则表达式,但是支持 *、?
通配符。通配符只限定到目录,比如:

发表评论

电子邮件地址不会被公开。 必填项已用*标注