为什么我们需要Http handlers?

4

我理解http处理程序是用于处理请求的,但这只是理论,因为我不太明白。许多第三方控件需要在web.config中添加http处理程序。有时我们需要创建自己的类,其中包含实现IHttpHandler接口的ProcessRequest方法,但我很困惑如何理解Http处理程序的作用和它们的角色?


1
每个请求都需要被一些代码处理,无论是 .aspx、.ashx、.asmx 还是其他任何格式。这可以通过 HttpHandlers 完成,asp.net 自带了一堆预设的处理程序,你也可以自由添加更多处理程序以满足需求。 - Pauli Østerø
2个回答

5

Http处理程序是ASP.NET的重要组成部分 - 它们是处理请求和生成响应的核心。在WebForms中,通常情况下,一个页面(aspx或者ashx)会解释请求,但这本身就是一种处理程序(默认映射在主web.config文件中)。

如果需要将处理程序添加到配置文件中,则通常是因为应用程序正在动态生成内容以用于URL,而这些URL并没有自动映射到现有的文件,或者是为了对超出常规ASP.NET范围的文件添加一些逻辑。

如果您使用的是ASP.NET MVC,则往往不需要这么做(如果需要也很少),因为请求通常不会直接映射到源树中的aspx/ashx。

回想一下ASP.NET WebForms,我主要使用处理程序的时间是在进行二进制下载、文件导出等操作时,因为我不希望它通过WebForms aspx管道运行。


0

个人而言,我使用它们来处理所有我的AJAX请求。因为我通常输出XML/JSON,所以我使用一个处理程序,这样我就不必担心实现System.Web.UI.Page时出现的所有开销。

它们还允许您拦截HTTP管道,有时可能很有用。我认为这完全取决于您想要实现什么。

肖恩


HttpHandlers不会拦截流水线,你应该使用HttpModules来做这件事。 - Pauli Østerø

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接