为什么我们需要Http处理程序?
我明白,http处理程序处理请求,但这只是理论,因为我不明白它。许多第三方控件需要在web.config中添加一个http处理程序。有时我们需要使用实现IHttpHandler接口的ProcessRequest方法来创建我们自己的类,但我很难理解Http处理程序适合的位置以及它们的角色是什么?为什么我们需要Http处理程序?
HTTP处理程序是ASP.NET的重要组成部分 - 它们是什么处理请求和生成响应。在webforms中,它是典型的(对于页面(aspx,或者可能是ashx)来解释请求,但这是本身一种处理程序类型(只在主web.config文件中默认映射)。
在添加处理程序的配置文件的情况下,这通常是因为应用程序是为网址动态生成内容不神奇映射到现有的文件,或添加一些逻辑为做文件存在但超出了常规的asp.net。
如果您正在使用ASP.NET MVC,你往往需要这少得多(如果有的话),因为它是请求规范不直接映射到源代码树的ASPX/ASHX。
回想ASP.NET webforms,我使用处理程序的主要时间是在执行诸如二进制下载,文件导出等操作时 - 我不希望它通过webforms aspx管道运行。
就我个人而言,我使用它们来处理我所有的AJAX请求。因为我通常会输出XML/JSON,所以我使用一个处理程序,因此我不必担心实现System.Web.UI.Page会带来的所有开销。
它们还允许您拦截HTTP管道,这有时可能会有用。 我认为这一切都取决于你想要达到的目标。
肖恩
HttpHandlers不会拦截管道,因此您可以使用HttpModules。 – 2011-01-05 11:34:25
每个请求都需要由某段代码处理,无论是.aspx,.ashx,.asmx还是其他。这是通过HttpHandlers完成的,asp.net附带了一堆预构建处理程序,您可以自由添加更多选择。 – 2011-01-05 11:36:15