Sure, 在讲解IIS7.5应用程序池集成模式和经典模式的区别之前,我们需要了解什么是IIS应用程序池。
IIS应用程序池(IIS Application Pool)是IIS服务器上一组工作进程的集合。每个应用程序池都会分配一个独立的工作进程,以独立地运行网站应用程序。IIS应用程序池的作用是提高应用程序在IIS服务器上的稳定性、性能和安全性。
IIS7.5应用程序池集成模式和经典模式的区别介绍,其实就是让我们选择用“集成模式”或“经典模式”运行网站。这两种模式主要不同在于:
- 集成模式(Integrated Mode):AspNet 4.0的默认模式。这种模式中,IIS7.5将会以完全集成的方式来托管ASP.NET应用程序,并且几乎所有的IIS7.5处理程序都能够与ASP.NET进行交互。在这种模式中,ASP.NET如同IIS7.5内置模块的一种,而不是作为一个独立的外部模块。
- 经典模式(Classic Mode):它是在 IIS7.0 中的经典模式进行兼容,并仅适用于 “旧式” ASP.NET 应用程序程序集。在这种模式下,只有ISAPI 端口或过滤器和 Classic ASP 可在 IIS 中托管。
相同点:
- 使用集成模式和经典模式可以让我们运行相同的 ASP.NET 应用程序。
- 都提供了应用程序隔离与沙盒。
不同点:
- 集成模式 : 完全集成托管在IIS管道中的所有内容。所有的模块都能够与ASP.NET应用程序进行交互和共享数据。
- 经典模式 : 启动 iis 6.0 基于工作进程的模式。它支持的是兼容于 IIS 5.0,6.0 的旧式 ASP.NET 应用程序。
示例一:
假设想对不同的应用程序池设置不同的.NET框架,我们则需要使用集成模式。如图片网站需要用.NET Framework 4.6.2,而应用池A和B的默认.NET Framework版本是4.0。
<configuration>
<system.web>
<compilation>
<assemblies>
<add assembly="System.Data.Entity, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<system.webServer>
<applicationPools>
<add name="PoolA" />
<add name="PoolB" />
</applicationPools>
<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
<location path="images">
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add type="MyAppModule"/>
</modules>
<handlers>
<add name="HTML" type="MyHtmlHandler" />
</handlers>
</system.webServer>
</location>
</configuration>
示例二:
如果选用经典模式,并且程序里使用WebRequest/WebResponse,则页面会出现许多奇怪的错误。而在集成模式下,这些致命的错误一般都可以解决。使用集成模式的话需要把 web.config 的 validateIntegratedModeConfiguration 属性设置为 false。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="UrlRoutingModule-4.0"
type="System.Web.Routing.UrlRoutingModule"
preCondition="managedHandler" />
</modules>
</system.webServer>
希望本次的攻略能够帮到你,如果你有更多关于IIS应用程序池的疑问,欢迎随时询问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:IIS7.5应用程序池集成模式和经典模式的区别介绍 - Python技术站