w3wp - IIS 6 中托管的 aspnet_isapi.dll 的用途是什么?

w3wp - IIS 6 中托管的 aspnet_isapi.dll 的用途是什么?

ASP.NET ISAPI 扩展的用途是什么aspnet_isapi.dll托管在工作进程中执行程序在 IIS 6.0 中?

在 IIS 5.0 中,我了解到此 ISAPI 扩展负责处理所有 asp.net 请求(aspx 等)。它加载在 IIS 进程中,负责将请求发送到 ASP.NET 工作进程aspnet_wp.exe使用命名管道。

使用 IIS 6.0,请求直接从内核到达 w3wp.exe,然后 ISAPI 扩展会在此工作进程中加载​​。

在 MSDN 文章(IIS 6.0)中这里是说Aspnet_isapi.dll - 将请求排队以供托管代码 ASP.NET 引擎处理,并执行运行状况监视。

这让我很困惑。

  • 这些请求不是已经在内核级别排队了吗?

  • aspnet_isapi.dll 不是非托管代码吗?即常规 win32 dll 吗?w3wp 不是托管代码吗?

我完全迷失了 :-|

任何帮助,将不胜感激 !

答案1

根据本文,如果使用 IIS6 进程模型,aspnet_isapi.dll 不用于对请求进行排队,但它负责初始化CLR。

当请求到达时,IIS 会检查资源类型并调用 ASP.NET ISAPI 扩展。如果启用了默认进程模型,aspnet_isapi 会将请求排队并将其分配给工作进程。任何请求数据都通过异步 I/O 发送。如果启用了 IIS 6 进程模型,请求将自动排队到处理应用程序所属的 IIS 应用程序池的工作进程 (w3wp.exe)。IIS 6 工作进程对 ASP.NET 和托管代码一无所知。它仅限于处理 *.aspx 扩展名和加载 aspnet_isapi 模块。当 ASP.NET ISAPI 在 IIS 6 进程模型下工作时,它的行为会有所不同,只会在 w3wp.exe 工作进程的上下文中加载 CLR。

相关内容