为每个应用程序池单独设置aspnet.config配置文件

ASP.NET2.0之后的版本就在各Framework的根目录下提供了一个aspnet.config文件,这个文件用来配置全局的一些信息,但是一直以来我们都没有怎么用过。

ASP.NET4.0之后,这个配置文件在并发和线程方面得到了充分的支持。比如,可以设置maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU和requestQueueLimit等参数,用来更加灵活的设置asp.net
runtime的配置。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet.config
C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet.config

在Windows Server 2008 R2 (IIS 7.5)中,已经允许可以为每个应用程序池(application pool)单独设置不同的设置,之前的asp.net.config只能作用于所有的framework而不能单独对站点或应用程序池设置。现在可以放心了,你可以为每个应用程序池单独设置一个自定义的aspnet.config配置文件,并且你可以保存在磁盘上的任何地方,在应用程序池启动的时候IIS会自动加载它。

MSDN的一篇文章里提到IIS应用程序池设置的时候支持了一个新属性CLRConfigFile用来设置这个配置文件的配置,但默认是没有值的,也就是说默认是只读取framework根目录下的aspnet.config文件。

IIS管理器( IIS Manager)没有为配置应用程序池而设置单独的UI界面,所以必须手工使用命令来设置。使用appcmd.exe可以来设置,参考如下的命令行代码,注意其中的2个变量(配置文件路径和应用程序池名称)。

%windir%\System32\inetsrv\appcmd.exe set config  -section:system.applicationHost/applicationPools /[name=‘DefaultAppPool‘].CLRConfigFile:"c:\inetpub\AppPoolClrConfig\DefaultAppPool_aspnet.config"  /commit:apphost

下面的内容也是一样的,只是一个模板让你参考,注意花括号里的内容 ({AppPoolName}和{FilePath})是需要替换的。(在%windir%\System32\inetsrv下运行appcmd)

    appcmd.exe set config  -section:system.applicationHost/applicationPools /[name=‘{AppPoolName}‘].CLRConfigFile:"{FilePath}"  /commit:apphost

注:framework根目录下的aspnet.config文件依然也在使用,这个自定义文件只是设置不同的部分。

我们来看一个例子:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <runtime>
        <legacyUnhandledExceptionPolicy enabled="false" />
        <legacyImpersonationPolicy enabled="true"/>
        <alwaysFlowImpersonationPolicy enabled="false"/>
        <SymbolReadingPolicy enabled="1" />
        <shadowCopyVerifyByTimestamp enabled="true"/>
    </runtime>
    <startup useLegacyV2RuntimeActivationPolicy="true" />
  <system.web>
    <applicationPool
        maxConcurrentRequestsPerCPU="5000"
        maxConcurrentThreadsPerCPU="0"
        requestQueueLimit="5000" />
  </system.web>
</configuration>

关于权限,应用程序池会使用自身的identity尝试读取这个配置文件,如果这个文件没有权限的话,你可以使用如下代码给予赋权:

icacls c:\inetpub\AppPoolClrConfig\DefaultWebSite_aspnet.config /grant "IIS APPPOOL\DefaultAppPool":(R)

安全起见,请确保这个文件没有继承其它的权限或拥有更多的权限。

现在,你就可以任意为每个应用程序池单独设置自定义的配置文件了,当然,多个应用程序池也可以共用同一个自定义配置文件。由于应用程序池只有在启动的时候才加载配置文件,所以当你设置了配置文件以后,你需要重启相应的应用程序池。

另外,要注意的是该功能只支持IIS7.5和以上版本,并且只支持集成模式(Integrated Pipeline mode)。

版权声明:本文为博主http://www.zuiniusn.com原创文章,未经博主允许不得转载。

时间: 2024-08-05 02:30:17

为每个应用程序池单独设置aspnet.config配置文件的相关文章

为每一个应用程序池单独设置aspnet.config配置文件

ASP.NET2.0之后的版本号就在各Framework的根文件夹下提供了一个aspnet.config文件.这个文件用来配置全局的一些信息,可是一直以来我们都没有怎么用过. ASP.NET4.0之后,这个配置文件在并发和线程方面得到了充分的支持.比方,能够设置maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU和requestQueueLimit等參数,用来更加灵活的设置asp.net runtime的配置. C:\Windows\Mi

No redirect found in host configuration file (C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet.config).

Configuration Error Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. Parser Error Message:

web.config配置文件中的configSource属性

每个网站里都会有一个web.config文件.修改Web.config文件会导致IIS重启,就是随意的回车一下也会导致重启.微软建议,不要将需要修改的配置内容保存在web.config中.而是单独放在一个config中.但是对于单独存放的config文件,怎么来对其进行修改和读取呢? 例如 可以指定 web.config 中的 appSetting 单独放在 一个 config.config 文件中.就是通过 configSource 属性来指定. 原本的web.config <?xml ver

App.config和Web.config配置文件的自定义配置节点

前言 昨天修改代码发现了一个问题,由于自己要在WCF服务接口中添加了一个方法,那么在相应调用的地方进行更新服务就可以了,不料意外发生了,竟然无法更新.左查右查终于发现了问题.App.config配置文件中的配置貌似出现了问题.查找节点发现是如下节点: <configSections> <section name="Test1" type="Demo.Section1,Demo"/> .............. </configSect

C#读写config配置文件

应用程序配置文件(App.config)是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序. 对于一个config文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="ServerIP" value=&quo

WinForm修改App.config配置文件功能

WinForm修改App.config配置文件主要是通过System.Configuration.dll里ConfigurationManager类来实现,在功能开发前是需要手动引用该dll文件. ConfigurationManager 类包括可用来执行以下任务的成员: ?从配置文件中读取一个节.若要访问配置信息,请调用 GetSection 方法.对于某些节,例如 appSettings 和 connectionStrings,请使用 AppSettings 和 ConnectionStri

Redis源码解析(十六)--- config配置文件

每个系统都会有类似一个config配置文件,config文件里的内容想想都知道,一定就是那么一些固定的一行行的属性代码了,今天在看redis代码中的config属性,那拉下来的一笔,的确多,目测在50至100个属性左右.如果就此将config每个属性代表什么意思不是我的风格,也一定是很乏味的,所以我的特点就是在代码中去理解程序员在写这类代码时的思路,和茫茫代码中的亮点.我们知道,redis运行的环境包括很多种的,windows,Linux,mac os等等,不同的操作系统,当然有些属性就不能支持

[转]Web.config配置文件详解(新手必看)

本文转自:http://www.cnblogs.com/gaoweipeng/archive/2009/05/17/1458762.html 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点.所以这里只介绍一些比较常用的节点. <?xml version="1.0"?> <!--注意: 除了手动编辑此文件以外,您还可以使用 Web 管理工具来配置应用程序的设置.可以

更改app.config配置文件的方法

1.修改appSettings设置 Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);            var setUrl = config.AppSettings.Settings["ApiAddress"];            if (setUrl==null)            {                config.A