.aspx和.ashx的主要区别是什么?

120
.aspx和.ashx页面有什么区别?我目前在需要处理从代码中调用并返回响应的请求时使用ashx,但我希望得到更加技术性的回答。
4个回答

109

Page是特殊的处理程序。

通用Web处理程序(*.ashx,基于扩展名的处理程序)是所有没有UI并包含@WebHandler指令的Web处理程序的默认HTTP处理程序。

ASP.NET页处理程序(*.aspx)是所有ASP.NET页面的默认HTTP处理程序。

在内置的HTTP处理程序中,还有Web服务处理程序(*.asmx)和Trace处理程序(trace.axd)。

MSDN 说:

ASP.NET HTTP处理程序是响应于对ASP.NET Web应用程序发出的请求而运行的过程(通常称为“端点”)。最常见的处理程序是处理.aspx文件的ASP.NET页面处理程序。当用户请求一个.aspx文件时,请求通过页面处理程序处理。

下面的图片说明了这个过程:request pipe line

至于您的第二个问题:

ashx处理比aspx更多的连接吗?

不这么认为(但可以确定的是,至少不会少于)。


谢谢您,但是您没有提到ashx处理程序,那么它的请求管道呢? - Arrabi
1
@Arrabi,HttpHandler只是请求的部分,在Page部分执行之前被执行。 - Oleks

88

.aspx 使用完整的生命周期(InitLoadPreRender),可以响应按钮点击等事件。
.ashx 只有一个 ProcessRequest 方法。


在这个上下文中,“可重用”是什么意思? - redcalx
11
网络服务器不必为每个新请求创建新的对象实例。如果处理程序上的IsReusable=true,则服务器可以重用现有的处理程序对象来处理下一个请求。 - quetzalcoatl
2
因此,它创建了一个处理程序实例并将其保留在内存中以便重复使用。它永远不会将其返回给GC。 - uzay95

29

.aspx是一个经过渲染的页面。如果您需要视图,请使用一个.aspx页面。如果您只需要后端功能且将停留在同一视图上,请使用.ashx页面。


据我所知,我想要更多技术性的答案,也许带有数字,ashx处理的连接比aspx多吗? - Arrabi

3

对于以前使用过nodeJs编程,特别是使用expressJS的人来说。我认为.ashx是一种调用next函数的中间件。而.aspx将是实际响应请求的控制器,可以在res.redirectres.send或其他任何位置上进行响应。


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