IIS如何处理高级别的MVC和Asp.net请求

时间:2018-02-23 04:02:13

标签: asp.net .net asp.net-mvc iis request

我正在尝试理解.net管道以及如何处理请求(MVC和Asp.net)并且我已经达成了这种理解。 如果我错过任何一步和我的疑惑,有人可以发表评论。

我的理解:

1)请求来到IIS。

2)IIS只是一个进程,并将请求指向它所映射的应用程序池。

3)应用程序池有工作进程。

4)工作进程加载ISAPI过滤器并创建运行时对象。

5)从应用程序的global.asax调用Application_start。

6)对于MVC,检查路由,然后将请求移动到特定控制器。类似地,asp.net请求“以某种方式”移动到特定页面。

问题 - 应用程序池有很多应用程序,因此有很多application_start方法。它如何映射到正确的应用程序?

问题 -Asp.net请求“某种程度上”移至特定页面。有人可以告诉我这是怎么回事。

由于

1 个答案:

答案 0 :(得分:1)

  

问题-Asp.net请求是"不知何故"转移到特定页面。可以   有人告诉我这是怎么发生的。

请求通过管道中的已定义阶段(无论ASP.NET网页或ASP.NET MVC)

当阶段ExecuteRequestHandler到来时 - 处理适当的处理程序。例如:在webforms的情况下,您的页面基本上继承了实现System.Web.UI.Page接口的IHttpHandler,而在MVC的情况下;实施MVCHandler的{​​{1}}被调用。

IHttpHandler ProcessRequest()方法在MVC的情况下负责执行所需的控制器,就像调用webforms的page_load方法一样。

现在要在应用程序管道中的MapRequestHandler阶段决定要使用的处理程序。

enter image description here

您可以在此处获取详细的流量信息:MVC Request Pipleline

  

问题 - 应用程序池有很多应用程序,因此很多   application_start方法。它如何映射到正确的应用程序?

直接从msdn引用:

  

请求到达,ASP.NET运行时为其创建AppDomain   应用。然后它创建HttpApplication的第一个实例   AppDomain中的类。 AppDomain可能会创建后续的   HttpApplication类的实例,因为ASP.NET可以创建一个   实例池。每个Web服务器请求都由a提供服务   HttpApplication类的单个实例。