.aspx和.ashx页面有什么区别?我目前在需要处理从代码中调用并返回响应的请求时使用ashx,但我希望得到更加技术性的回答。
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文件时,请求通过页面处理程序处理。
下面的图片说明了这个过程:
至于您的第二个问题:
ashx处理比aspx更多的连接吗?
不这么认为(但可以确定的是,至少不会少于)。
.aspx
使用完整的生命周期(Init
、Load
、PreRender
),可以响应按钮点击等事件。
而 .ashx
只有一个 ProcessRequest
方法。
.aspx是一个经过渲染的页面。如果您需要视图,请使用一个.aspx页面。如果您只需要后端功能且将停留在同一视图上,请使用.ashx页面。
对于以前使用过nodeJs编程,特别是使用expressJS的人来说。我认为.ashx
是一种调用next
函数的中间件。而.aspx
将是实际响应请求的控制器,可以在res.redirect
、res.send
或其他任何位置上进行响应。
HttpHandler
只是请求的部分,在Page
部分执行之前被执行。 - Oleks