Dan*_*rza 79 c# asp.net iis httphandler httpmodule
我的问题很简单(虽然答案很可能不是):我正在尝试决定如何在C#/ ASP.NET中实现服务器端上传处理程序.
我已经使用了HttpModules(IHttpModule接口)和HttpHandlers(IHttpHandler接口),我发现我可以使用这两种机制来实现它.我也想到,我不明白两者之间的差异.
所以我的问题是: 在什么情况下我会选择使用IHttpHandler而不是IHttpModule(反之亦然)?
一个人在管道中执行得更高吗?在某些情况下更容易配置吗?一个人不适合中等安全性吗?
小智 69
ASP.NET HTTP处理程序是响应对ASP.NET Web应用程序发出的请求而运行的进程(通常称为"端点").最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序.当用户请求.aspx文件时,页面通过页面处理程序处理请求.您可以创建自己的HTTP处理程序,将自定义输出呈现给浏览器.
自定义HTTP处理程序的典型用法包括:
一个HTTP模块是呼吁是你的应用的每个请求的组件.HTTP模块作为ASP.NET请求管道的一部分被调用,并且可以在整个请求中访问生命周期事件.HTTP模块允许您检查传入和传出请求,并根据请求执行操作.
HTTP模块的典型用途包括:
来自:http://msdn.microsoft.com/en-us/library/bb398986.aspx
Igo*_*ejc 15
IHttpModule
为您提供更多控制权,您基本上可以控制指向Web应用程序的所有流量.IHttpHandler
为您提供较少的控制权(流量在到达您的处理程序之前被过滤),但如果这足以满足您的需求,那么我认为没有理由使用它IHttpModule
.
无论如何,它可能是最好的让你的自定义逻辑在一个单独的类,然后只需使用这个类从任一IHttpModule
或IHttpHandler
.这样你就不必担心选择其中一个了.事实上,你可以创建一个实现了一个额外的类都 IHttpHandler
和IHttpModule
再决定通过设置它使用什么Web.config
.
小智 5
模块用于处理在处理程序实际处理请求之前和之后由应用程序引发的事件.另一方面,处理程序没有机会订阅任何应用程序事件,而是简单地调用它们的ProcessRequest方法,以便处理特定请求的"主要"工作.
请查看Microsoft的此文档(大约在"请求由HttpApplication管道处理"部分的页面的下半部分):
http://msdn.microsoft.com/en-us/library/bb470252.aspx
您可以在步骤15中看到处理程序获得执行的机会.该步骤之前和之后的所有事件都可用于模块拦截,但不能用于处理程序.
根据您尝试实现的具体功能,您可以使用处理程序或模块来实现上载处理程序.你甚至可能最终都使用它们.
需要考虑的事情可能是使用已经编写的上传处理程序.
这是一个免费的开源软件:
http://www.brettle.com/neatupload
这是一个商业的:
http://krystalware.com/Products/SlickUpload/
如果你查看NeatUpload的文档,你会发现它需要你配置一个模块.
归档时间: |
|
查看次数: |
24537 次 |
最近记录: |