【发布时间】:2015-02-10 04:57:31
【问题描述】:
当一个请求进入 IIS 时,IIS 如何知道该请求是针对 ASP.NET 而不是针对其他东西,例如 PHP。
我猜它不会。 IIS 所做的只是在 HTTP 请求标头中查找请求的域,并将请求路由到在该网站名称上运行的 IIS 中托管的应用程序。但是 aspnet_isapi.dll 在解析请求时做了什么?库是否只有在请求已经在 ASP.NET 中时才会生效?
【问题讨论】:
当一个请求进入 IIS 时,IIS 如何知道该请求是针对 ASP.NET 而不是针对其他东西,例如 PHP。
我猜它不会。 IIS 所做的只是在 HTTP 请求标头中查找请求的域,并将请求路由到在该网站名称上运行的 IIS 中托管的应用程序。但是 aspnet_isapi.dll 在解析请求时做了什么?库是否只有在请求已经在 ASP.NET 中时才会生效?
【问题讨论】:
你说的很对。 IIS 基本上充当任何可能想要响应给定请求的 Web 应用程序的控制器。当请求进入时,IIS 通过检查请求是否与定义的绑定相匹配,将其路由到适当的应用程序。如果找到匹配的绑定,它会检查相应的应用程序是否已初始化,如果没有,则执行该初始化。然后它传递请求,Web 应用程序在处理请求和生成响应时完成所有实际工作。
重要的是,Web 应用程序不一定是 asp.net 网站或应用程序的同义词。 IIS 还可以托管邮件服务器、ftp 站点、(我相信)php 应用程序等等。然而,在每种情况下,仍然必须定义一个绑定,并且必须有一个 IIS 可以初始化和查询其状态的引擎。
【讨论】: