谁先在ASP中执行.. Net MVC管道

本文关键字:Net MVC 管道 执行 ASP | 更新日期: 2023-09-27 18:17:50

我对IIS 7.0中如何处理请求的理解如下:

  1. 当请求进入IIS时,URLRoutingModule处理它。
  2. 如果ÙRLRoutingModule找到一个无扩展URL(即在RouteTable内),则映射到相应的控制器。

但是,我找不到下列问题的答案。

  1. 之前,我研究了aspnet_isapi.dll处理所有与ASP.NET相关的活动。那么,在HTTP Pipeline中,哪个先执行?[URLRoutingModule or ASPNET_ISAPI.DLL]

  2. And ASPNET_ISAPI.DLLHTTP Handler还是ISAPI Extension ?

(我读到http handler可以通过从IHttpHandler派生来实现,而要编写isapi extension,我们需要C/c++中的非托管代码)

谁先在ASP中执行.. Net MVC管道

在HTTP管道中,哪个先执行?[URLRoutingModule or ASPNET_ISAPI.DLL]

ASPNET_ISAPI.DLL优先执行。它将控制传递给托管ASP。. NET运行时并在必要时调用URLRoutingModule

ASPNET_ISAPI.DLL是HTTP处理程序还是ISAPI扩展?

是一个ISAPI扩展:

从MSDN:

ASP。. NET功能包含在名为Aspnet_isapi.dll的ISAPI dll中。

HTTP处理程序是由ASP调用的托管的处理程序。网运行时。

来自HTTP处理程序和HTTP模块概述:

一个ASP。. NET HTTP处理程序是响应向ASP. NET服务器发出的请求而运行的进程(通常称为"端点")。. NET Web应用程序.

ASPNET_ISAPI.DLL是一个ISAPI扩展。这些扩展是在IIS中注册的组件(DLL、脚本、可执行文件)。每个扩展都注册为处理特定的请求,因为IIS本身处理的请求很少。例如,注册名称扩展名以处理标识为ASP的所有请求。净相关。

ISAPI过滤器是用于在IIS管理请求的方式中添加某些行为的dll。它们监听所有传入的请求,直到找到一个它们能够处理的请求。

注意,上面的两个概念是为IIS定义的。HttpModules和httphandler是不同的。

HttpModules和httphandler是纯ASP的。. NET对象,因此与它们相关的所有事情都发生在IIS处理对ASP的请求之后。净管道。然而,他们在ASP中的角色。. NET类似于IIS——处理程序处理特定的请求,模块拦截所有请求并处理配置中指定的一些请求。

URLRoutingModule是一个标准的HttpModule,所以它会拦截传递给ASP的请求。如果其中注册的任何路由与请求匹配,则触发相应的HttpHandler。默认的ASp处理程序。. NET MVC是MvcRouteHandler,然后它触发MVC中与控制器相关的活动。

一些进一步阅读的链接:

    MVC请求生命周期
  • ASP。. NET在IIS概览
  • HttpModules解释
  • ISAPI过滤器解释
  • MVC中的路由说明