【问题标题】:How IIS handles request for both MVC and Asp.net at high levelIIS 如何在高层处理 MVC 和 Asp.net 的请求
【发布时间】:2018-08-03 02:24:14
【问题描述】:

我正在尝试了解 .net 管道以及如何处理请求(MVC 和 Asp.net),我已经理解了这一点。 如果我遗漏了任何步骤和我的疑问,有人可以发表评论吗?

我的理解:

1) 请求到达 IIS。

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

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

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

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

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

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

问题-Asp.net 请求被“以某种方式”移动到特定页面。有人可以高级别告诉我这是怎么发生的吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    问题-Asp.net 请求“以某种方式”移动到特定页面。可以 有人在高层告诉我这是怎么发生的。

    请求在管道中经过定义的阶段(与 ASP.NET 网络表单或 ASP.NET MVC 无关)

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

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

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

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

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

    直接引用msdn

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

    【讨论】:

    • 谢谢,但我有一个疑问。你说,每个应用程序都有一个应用程序实例,但是如何从应用程序池中调用正确的应用程序实例。这有意义吗?一个应用程序池可以有多个应用程序实例
    • @poojaMalik:谢谢。我意识到我的回答有误并予以纠正。希望现在能成功..
    • @poojaMalik : 应用程序池中的每个应用程序也是通过应用程序域隔离的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多