IIS 之 Web 服务器上的 ASP.NET 进程模型设置

  配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置。 processModel 节只能在 Machine.config 文件中进行设置,它影响服务器上运行的所有 ASP.NET 应用程序。

  Machine.config 文件位置在:%windir%\Microsoft.NET\Framework\framework_version\CONFIG 目录下,如下图是我本机的位置:

  

  注意:对 processModel 元素的更改将只有在辅助进程重新启动之后才生效,而不是像其他配置元素那样在更改设置之后立即生效。

<processModel 
   enable="true|false"
   timeout="hrs:mins:secs|Infinite" 
   idleTimeout="hrs:mins:secs|Infinite"
   shutdownTimeout="hrs:mins:secs|Infinite"
   requestLimit="num|Infinite"
   requestQueueLimit="num|Infinite"
   restartQueueLimit="num|Infinite"
   memoryLimit="percent"
   webGarden="true|false"
   cpuMask="num"
   userName="<username>"
   password="<secure password>"
   logLevel="All|None|Errors"
   clientConnectedCheck="hrs:mins:secs|Infinite"
   comAuthenticationLevel="Default|None|Connect|Call| 
               Pkt|PktIntegrity|PktPrivacy"
   comImpersonationLevel="Default|Anonymous|Identify|
               Impersonate|Delegate"
   responseDeadlockInterval="hrs:mins:secs|Infinite"
   responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
   autoConfig="true|false"
   maxWorkerThreads="num"
   maxIoThreads="num"
   minWorkerThreads="num"
   minIoThreads="num"
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   maxAppDomains="2000"
/>

特性和元素

特性

特性

说明

autoConfig

指定是否自动配置下列设置,以便基于计算机配置实现最佳性能:

这些值按照位于 http://support.microsoft.com/?id=821268 上的知识库文章进行设置。

此特性不影响 .NET Framework 客户端应用程序,而只影响 ASP.NET 应用程序。

autoConfig 特性可以为下列值之一。

 
术语 定义
True 指示 ASP.NET 自动配置上述列表中的特性,以便基于计算机配置实现最佳性能。
False 指示 ASP.NET 应当使用为上述列表中的特性显式定义的值。

除非以前已经有一个现有配置,否则 Machine.config 文件中的默认值为 True。

clientConnectedCheck

指定在 ASP.NET 检查以确定客户端是否已连接前在队列中保留的请求的长度。

默认值为 "00:00:05"(5 秒)。

comAuthenticationLevel

指定 DCOM 安全的身份验证级别。

comAuthenticationLevel 特性可以为下列值之一。

 
Value 说明
Call 指定在每一远程过程调用的开始当服务器接收请求时 DCOM 验证客户端的凭据。
Connect 指定只有在客户端与服务器建立连接时 DCOM 才验证客户端的凭据。
Default 指定 DCOM 使用其标准安全协商算法确定身份验证级别。
None 不指定身份验证。
Pkt 指定 DCOM 验证所接收的所有数据是否都来自预期的客户端。 数据报传输始终使用 Pkt 身份验证。
PktIntegrity 指定 DCOM 验证和确认未修改在客户端和服务器之间传输的任何数据。
PktPrivacy 指定 DCOM 验证所有以前的级别并加密每一远程过程调用的参数值。

默认值为 Connect。

comImpersonationLevel

指定 COM 安全的身份验证级别。

comImpersonationLevel 特性可以为下列值之一。

 
Value 说明
Anonymous 指定客户端对于服务器而言是匿名的。 服务器可以模拟客户端,但是模拟标记不会包含任何信息。 在 .NET Framework 1.1 版中,不支持 Anonymous。
Default 指定 DCOM 使用其标准安全协商算法确定模拟级别。
Delegate 指定服务器进程在代表客户端来执行时可以模拟客户端的安全上下文。 服务器进程还可以在代表客户端时使用掩饰向其他服务器发出传出呼叫。 服务器可以使用其他计算机上的客户端的安全上下文,以作为客户端来获得对本地和远程资源的访问权限。 当在该级别模拟时,可以让模拟标记穿过任意数目的计算机边界。
Identify 指定服务器可以包含客户端的标识。 服务器可以模拟客户端以进行访问控制列表 (ACL) 检查,但是无法作为客户端访问系统对象。
Impersonate 指定服务器进程在代表客户端来执行时可以模拟客户端的安全上下文。 此级别的模拟可用来访问本地资源,如文件。 当在该级别模拟时,模拟标记可以只横穿一个计算机边界。

默认值为 Impersonate。

cpuMask

指定在多处理器服务器上哪些处理器 (CPU) 可以运行 ASP.NET 进程。 该值指定一个位模式,它指示满足运行 ASP.NET 线程的条件的 CPU。 例如,cpuMask 十六进制值 0x0d 代表位模式 1101。 在具有四个 CPU 的计算机上,这表明可以在 CPU 0、2,和 3,而不是 CPU 1 上安排 ASP.NET 进程。 ASP.NET 为满足条件的每个 CPU 启动一个辅助进程。 如果 webGarden 特性为 true,则该特性会将辅助进程限制为满足条件的 CPU 的数目。 最大辅助进程数目等于 CPU 的数目。 如果 webGarden 为 false,则该特性被忽略,并且将只有一个辅助进程运行。 这是默认行为。

默认值为 "0xffffffff"。

enable

指定是否启用进程模型。

enable 特性可以为下列值之一。

 
Value 说明
True 指示进程模型已启用。
False 指示进程模型未启用。

默认值为 true。

idleTimeout

以字符串格式 (hr:min:sec) 指定不活动期限,在该不活动期限后,ASP.NET 将自动结束辅助进程。

默认值为 Infinite。

logLevel

指定要记录到事件日志的事件类型。

logLevel 特性可以为下列值之一。

 
Value 说明
All 指定记录所有进程事件。
Errors 指定只记录意外关闭、内存限制关闭和死锁关闭。
None 指定不记录任何事件。

默认值为 Errors。

maxAppDomains

指定一个进程中允许的应用程序域的最大数目。

该特性可以小于或等于 2000。

默认值为 2000。

maxIoThreads

按 CPU 配置用于进程的 I/O 线程的最大数目。 例如,如果此值在单处理器服务器上为 25,则 ASP.NET 将使用运行时 API 将进程限制设置为 25。 在双处理器服务器上,限制设置为 50。 此特性的值必须大于等于 httpRuntime 配置选项中的 minFreeThread 特性设置。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

该特性的范围是从 5 到 100。

默认值为 20。

maxWorkerThreads

按 CPU 配置用于进程的辅助线程的最大数目。 例如,如果此值在单处理器服务器上为 25,则 ASP.NET 将使用运行时 API 将进程限制设置为 25。 在双处理器服务器上,限制设置为 50。 此特性的值必须大于等于 httpRuntime 配置选项中的 minFreeThread 特性设置。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

该特性的范围是从 5 到 100。

默认值为 20。

memoryLimit

指定在 ASP.NET 启动新进程和重新分配现有请求前,辅助进程可以使用的最大内存大小。该属性的单位为相对于总系统内存的百分比。

默认值为 60。

minIoThreads

按 CPU 配置用于进程的 I/O 线程的最小数目。 另外,请参见 maxIoThreads。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

默认值为 1。

minWorkerThreads

按 CPU 配置用于进程的辅助线程的最小数目。 另外,请参见 maxWorkerThreads。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

默认值为 1。

password

如果它存在并且与 userName 一起使用,将导致辅助进程使用配置的 Microsoft Windows 标识运行。 请参见 userName,获取有关无需密码的特殊名称 System 和 Machine 的更多信息,以及有关在注册表中存储加密的辅助进程凭据的信息。

Note Note
在配置文件中存储凭据会有安全风险。 有关更多信息,请参见本文档后面的“在注册表中存储用户名和密码”。

默认值为 AutoGenerate。

pingFrequency

以标准进程模型格式 (hr:min:sec) 指定时间间隔,该时间间隔是 ISAPI 扩展对辅助进程执行 ping 命令来确定其是否正在运行所采用的时间间隔。 如果在 pingTimeout 时间间隔内该辅助进程没有运行,将重新启动该辅助进程。

默认值为 Infinite。

pingTimeout

以标准进程模型格式 (hr:min:sec) 指定时间间隔,在该时间间隔后,将重新启动没有响应的响应辅助进程。 ISAPI 扩展每隔 pingFrequency 间隔会对辅助进程使用 ping 命令。 如果辅助进程在 pingTimeout 间隔内没有响应,则重新启动该进程。

默认值为 Infinite。

requestLimit

指定 ASP.NET 自动启动新辅助进程以代替当前辅助进程前允许的请求的数目。

默认值为 Infinite。

requestQueueLimit

指定队列中允许的请求数,超过此数目后,ASP.NET 将开始向新请求返回“503 - 服务器太忙”消息。

默认值为 5000。

responseDeadlockInterval

以标准进程模型格式 (hr:min:sec) 指定时间间隔,在该时间间隔后,如果满足以下条件,进程将重新启动:

  • 有排队的请求。

  • 在此时间间隔期间没有响应。

默认值为 "0:03:00"(3 分钟)。

responseRestartDeadlockInterval

ASP.NET 不再使用该特性,提供该特性只是为了兼容。 如果该属性出现在配置文件中,也不会导致配置错误。 现在,当出现死锁情况时,所有循环都将由 responseDeadlockInterval 特性控制。

默认值为 "0:03:00"(3 分钟)。

restartQueueLimit

指定在出现非标准终止后,等待辅助进程重新启动时排入队列的请求的最大数目。 如果是完全关闭或标准的重新启动,此设置将不适用。

默认值为 10。

serverErrorMessageFile

指定在发生致命错误时用来代替默认的“服务器不可用”消息的文件的内容。 该文件位置是相对于 Machine.config 文件的位置,或者可以是绝对路径。 如果该特性不存在,则使用默认的“服务器不可用”消息。

shutdownTimeout

指定辅助进程关闭所允许的分钟数。 在超时过期后,ASP.NET 关闭辅助进程。 该时间以 hr:min:sec 字符串格式表示。

默认值为 "0:00:05"(5 秒)。

timeout

指定分钟数,超过该分钟数 ASP.NET 将启动新的辅助进程以替代当前辅助进程。

默认值为 Infinite。

userName

指定 ASP.NET 将使用与默认进程标识不同的 Windows 标识运行辅助进程。 默认情况下,该特性设置为 Machine,并且进程以 ASPNET 用户帐户运行,该帐户是在安装 ASP.NET 时自动创建的。 ASPNET 帐户的密码是在安装时通过加密生成的。 如果在该特性和 password 特性中存在有效的凭据,则将使用给定的帐户运行该进程。 userName 的另一个值是 System,密码为 AutoGenerate,该值以管理帐户运行进程,并允许在该进程下运行的所有 ASP.NET 用户代码具有完全的管理权限。 有关在作为域控制器的服务器上使用 ASP.NET 的信息,请参见本主题后面的“备注”。

Note Note
此特性和 password 特性以明文形式存储在配置文件中。 虽然 Microsoft Internet 信息服务 (IIS) 不传输 .config 文件来响应用户代理请求,但是可以通过其他途径读取配置文件。 例如,在服务器的域上具有适当凭据的已经过身份验证的用户可以读取配置文件。 出于安全考虑,processModel 节支持在注册表中存储加密的 userName 和 password 特性。 凭据必须是 REG_BINARY 格式并由 Windows 2000 和 Windows XP 数据保护 API (DPAPI) 加密函数加密。 有关更多信息,请参见本文档后面的“在注册表中存储用户名和密码”。

默认值为 "machine"。

webGarden

在与 cpuMask 特性一起使用时控制 CPU 关联。 (多处理器 Web 服务器称作网络园)。

webGarden 特性可以为下列值之一。

 
Value 说明
True 指示 cpuMask 特性用于指定哪些 CPU 符合运行 ASP.NET 进程的条件。
False 指示由 Windows 操作系统安排 CPU 使用。 cpuMask 特性被忽略,并且只运行一个辅助进程。

默认值为 False。

子元素

无。

父元素

 

元素

说明

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为方式的配置元素。

 

要查看英语原文,请勾选“英语”复选框。也可将鼠标指针移到文本上,在弹出窗口中显示英语原文。
翻译
英语
本文档已存档,并且将不进行维护。

processModel 元素(ASP.NET 设置架构)

 

[本文档仅供预览,在以后的发行版中可能会发生更改。包含的空白主题用作占位符。]

配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置。 processModel 节只能在 Machine.config 文件中进行设置,它影响服务器上运行的所有 ASP.NET 应用程序。

警告说明 警告

processModel 元素的更改将只有在辅助进程重新启动之后才生效,而不是像其他配置元素那样在更改设置之后立即生效。 有关更多信息,请参见本主题后面的“备注”。

 
复制
<processModel 
   enable="true|false"
   timeout="hrs:mins:secs|Infinite" 
   idleTimeout="hrs:mins:secs|Infinite"
   shutdownTimeout="hrs:mins:secs|Infinite"
   requestLimit="num|Infinite"
   requestQueueLimit="num|Infinite"
   restartQueueLimit="num|Infinite"
   memoryLimit="percent"
   webGarden="true|false"
   cpuMask="num"
   userName="<username>"
   password="<secure password>"
   logLevel="All|None|Errors"
   clientConnectedCheck="hrs:mins:secs|Infinite"
   comAuthenticationLevel="Default|None|Connect|Call| 
               Pkt|PktIntegrity|PktPrivacy"
   comImpersonationLevel="Default|Anonymous|Identify|
               Impersonate|Delegate"
   responseDeadlockInterval="hrs:mins:secs|Infinite"
   responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
   autoConfig="true|false"
   maxWorkerThreads="num"
   maxIoThreads="num"
   minWorkerThreads="num"
   minIoThreads="num"
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   maxAppDomains="2000"
/>

以下几节描述了特性、子元素和父元素。

特性

 

特性

说明

autoConfig

指定是否自动配置下列设置,以便基于计算机配置实现最佳性能:

这些值按照位于 http://support.microsoft.com/?id=821268 上的知识库文章进行设置。

此特性不影响 .NET Framework 客户端应用程序,而只影响 ASP.NET 应用程序。

autoConfig 特性可以为下列值之一。

 
术语 定义
True 指示 ASP.NET 自动配置上述列表中的特性,以便基于计算机配置实现最佳性能。
False 指示 ASP.NET 应当使用为上述列表中的特性显式定义的值。

除非以前已经有一个现有配置,否则 Machine.config 文件中的默认值为 True。

clientConnectedCheck

指定在 ASP.NET 检查以确定客户端是否已连接前在队列中保留的请求的长度。

默认值为 "00:00:05"(5 秒)。

comAuthenticationLevel

指定 DCOM 安全的身份验证级别。

comAuthenticationLevel 特性可以为下列值之一。

 
Value 说明
Call 指定在每一远程过程调用的开始当服务器接收请求时 DCOM 验证客户端的凭据。
Connect 指定只有在客户端与服务器建立连接时 DCOM 才验证客户端的凭据。
Default 指定 DCOM 使用其标准安全协商算法确定身份验证级别。
None 不指定身份验证。
Pkt 指定 DCOM 验证所接收的所有数据是否都来自预期的客户端。 数据报传输始终使用 Pkt 身份验证。
PktIntegrity 指定 DCOM 验证和确认未修改在客户端和服务器之间传输的任何数据。
PktPrivacy 指定 DCOM 验证所有以前的级别并加密每一远程过程调用的参数值。

默认值为 Connect。

comImpersonationLevel

指定 COM 安全的身份验证级别。

comImpersonationLevel 特性可以为下列值之一。

 
Value 说明
Anonymous 指定客户端对于服务器而言是匿名的。 服务器可以模拟客户端,但是模拟标记不会包含任何信息。 在 .NET Framework 1.1 版中,不支持 Anonymous。
Default 指定 DCOM 使用其标准安全协商算法确定模拟级别。
Delegate 指定服务器进程在代表客户端来执行时可以模拟客户端的安全上下文。 服务器进程还可以在代表客户端时使用掩饰向其他服务器发出传出呼叫。 服务器可以使用其他计算机上的客户端的安全上下文,以作为客户端来获得对本地和远程资源的访问权限。 当在该级别模拟时,可以让模拟标记穿过任意数目的计算机边界。
Identify 指定服务器可以包含客户端的标识。 服务器可以模拟客户端以进行访问控制列表 (ACL) 检查,但是无法作为客户端访问系统对象。
Impersonate 指定服务器进程在代表客户端来执行时可以模拟客户端的安全上下文。 此级别的模拟可用来访问本地资源,如文件。 当在该级别模拟时,模拟标记可以只横穿一个计算机边界。

默认值为 Impersonate。

cpuMask

指定在多处理器服务器上哪些处理器 (CPU) 可以运行 ASP.NET 进程。 该值指定一个位模式,它指示满足运行 ASP.NET 线程的条件的 CPU。 例如,cpuMask 十六进制值 0x0d 代表位模式 1101。 在具有四个 CPU 的计算机上,这表明可以在 CPU 0、2,和 3,而不是 CPU 1 上安排 ASP.NET 进程。 ASP.NET 为满足条件的每个 CPU 启动一个辅助进程。 如果 webGarden 特性为 true,则该特性会将辅助进程限制为满足条件的 CPU 的数目。 最大辅助进程数目等于 CPU 的数目。 如果 webGarden 为 false,则该特性被忽略,并且将只有一个辅助进程运行。 这是默认行为。

默认值为 "0xffffffff"。

enable

指定是否启用进程模型。

enable 特性可以为下列值之一。

 
Value 说明
True 指示进程模型已启用。
False 指示进程模型未启用。

默认值为 true。

idleTimeout

以字符串格式 (hr:min:sec) 指定不活动期限,在该不活动期限后,ASP.NET 将自动结束辅助进程。

默认值为 Infinite。

logLevel

指定要记录到事件日志的事件类型。

logLevel 特性可以为下列值之一。

 
Value 说明
All 指定记录所有进程事件。
Errors 指定只记录意外关闭、内存限制关闭和死锁关闭。
None 指定不记录任何事件。

默认值为 Errors。

maxAppDomains

指定一个进程中允许的应用程序域的最大数目。

该特性可以小于或等于 2000。

默认值为 2000。

maxIoThreads

按 CPU 配置用于进程的 I/O 线程的最大数目。 例如,如果此值在单处理器服务器上为 25,则 ASP.NET 将使用运行时 API 将进程限制设置为 25。 在双处理器服务器上,限制设置为 50。 此特性的值必须大于等于 httpRuntime 配置选项中的 minFreeThread 特性设置。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

该特性的范围是从 5 到 100。

默认值为 20。

maxWorkerThreads

按 CPU 配置用于进程的辅助线程的最大数目。 例如,如果此值在单处理器服务器上为 25,则 ASP.NET 将使用运行时 API 将进程限制设置为 25。 在双处理器服务器上,限制设置为 50。 此特性的值必须大于等于 httpRuntime 配置选项中的 minFreeThread 特性设置。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

该特性的范围是从 5 到 100。

默认值为 20。

memoryLimit

指定在 ASP.NET 启动新进程和重新分配现有请求前,辅助进程可以使用的最大内存大小。该属性的单位为相对于总系统内存的百分比。

默认值为 60。

minIoThreads

按 CPU 配置用于进程的 I/O 线程的最小数目。 另外,请参见 maxIoThreads。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

默认值为 1。

minWorkerThreads

按 CPU 配置用于进程的辅助线程的最小数目。 另外,请参见 maxWorkerThreads。

有关线程处理类型的信息,请参见 Improving ASP.NET Performance(提高 ASP.NET 性能)中的“Threading Explained”(线程处理说明)。

默认值为 1。

password

如果它存在并且与 userName 一起使用,将导致辅助进程使用配置的 Microsoft Windows 标识运行。 请参见 userName,获取有关无需密码的特殊名称 System 和 Machine 的更多信息,以及有关在注册表中存储加密的辅助进程凭据的信息。

Note Note
在配置文件中存储凭据会有安全风险。 有关更多信息,请参见本文档后面的“在注册表中存储用户名和密码”。

默认值为 AutoGenerate。

pingFrequency

以标准进程模型格式 (hr:min:sec) 指定时间间隔,该时间间隔是 ISAPI 扩展对辅助进程执行 ping 命令来确定其是否正在运行所采用的时间间隔。 如果在 pingTimeout 时间间隔内该辅助进程没有运行,将重新启动该辅助进程。

默认值为 Infinite。

pingTimeout

以标准进程模型格式 (hr:min:sec) 指定时间间隔,在该时间间隔后,将重新启动没有响应的响应辅助进程。 ISAPI 扩展每隔 pingFrequency 间隔会对辅助进程使用 ping 命令。 如果辅助进程在 pingTimeout 间隔内没有响应,则重新启动该进程。

默认值为 Infinite。

requestLimit

指定 ASP.NET 自动启动新辅助进程以代替当前辅助进程前允许的请求的数目。

默认值为 Infinite。

requestQueueLimit

指定队列中允许的请求数,超过此数目后,ASP.NET 将开始向新请求返回“503 - 服务器太忙”消息。

默认值为 5000。

responseDeadlockInterval

以标准进程模型格式 (hr:min:sec) 指定时间间隔,在该时间间隔后,如果满足以下条件,进程将重新启动:

  • 有排队的请求。

  • 在此时间间隔期间没有响应。

默认值为 "0:03:00"(3 分钟)。

responseRestartDeadlockInterval

ASP.NET 不再使用该特性,提供该特性只是为了兼容。 如果该属性出现在配置文件中,也不会导致配置错误。 现在,当出现死锁情况时,所有循环都将由 responseDeadlockInterval 特性控制。

默认值为 "0:03:00"(3 分钟)。

restartQueueLimit

指定在出现非标准终止后,等待辅助进程重新启动时排入队列的请求的最大数目。 如果是完全关闭或标准的重新启动,此设置将不适用。

默认值为 10。

serverErrorMessageFile

指定在发生致命错误时用来代替默认的“服务器不可用”消息的文件的内容。 该文件位置是相对于 Machine.config 文件的位置,或者可以是绝对路径。 如果该特性不存在,则使用默认的“服务器不可用”消息。

shutdownTimeout

指定辅助进程关闭所允许的分钟数。 在超时过期后,ASP.NET 关闭辅助进程。 该时间以 hr:min:sec 字符串格式表示。

默认值为 "0:00:05"(5 秒)。

timeout

指定分钟数,超过该分钟数 ASP.NET 将启动新的辅助进程以替代当前辅助进程。

默认值为 Infinite。

userName

指定 ASP.NET 将使用与默认进程标识不同的 Windows 标识运行辅助进程。 默认情况下,该特性设置为 Machine,并且进程以 ASPNET 用户帐户运行,该帐户是在安装 ASP.NET 时自动创建的。 ASPNET 帐户的密码是在安装时通过加密生成的。 如果在该特性和 password 特性中存在有效的凭据,则将使用给定的帐户运行该进程。 userName 的另一个值是 System,密码为 AutoGenerate,该值以管理帐户运行进程,并允许在该进程下运行的所有 ASP.NET 用户代码具有完全的管理权限。 有关在作为域控制器的服务器上使用 ASP.NET 的信息,请参见本主题后面的“备注”。

Note Note
此特性和 password 特性以明文形式存储在配置文件中。 虽然 Microsoft Internet 信息服务 (IIS) 不传输 .config 文件来响应用户代理请求,但是可以通过其他途径读取配置文件。 例如,在服务器的域上具有适当凭据的已经过身份验证的用户可以读取配置文件。 出于安全考虑,processModel 节支持在注册表中存储加密的 userName 和 password 特性。 凭据必须是 REG_BINARY 格式并由 Windows 2000 和 Windows XP 数据保护 API (DPAPI) 加密函数加密。 有关更多信息,请参见本文档后面的“在注册表中存储用户名和密码”。

默认值为 "machine"。

webGarden

在与 cpuMask 特性一起使用时控制 CPU 关联。 (多处理器 Web 服务器称作网络园)。

webGarden 特性可以为下列值之一。

 
Value 说明
True 指示 cpuMask 特性用于指定哪些 CPU 符合运行 ASP.NET 进程的条件。
False 指示由 Windows 操作系统安排 CPU 使用。 cpuMask 特性被忽略,并且只运行一个辅助进程。

默认值为 False。

子元素

无。

父元素

 

元素

说明

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为方式的配置元素。

  托管代码配置系统不读取 processModel 配置设置。 这些 processModel 配置设置而是由 aspnet_isapi.dll 非托管 DLL 直接读取的。 在重新启动 IIS 辅助进程之前将不应用对此节的更改。

  当 ASP.NET 运行于本机模式的 IIS 版本 6 下时,将使用 IIS 6 进程模型,并忽略 processModel 节中的某些特性。 但是,以下特性仍是适用的:

  autoConfig

  maxIoThreads

  maxWorkerThreads

  minIoThreads

  minWorkerThreads

  requestQueueLimit

  responseDeadlockInterval

  关于 IIS 7 进程模型的信息,请参见 “应用程序池的进程模型配置”

  若要在 IIS 6.0 中配置进程标识、循环或其他进程模型值,请使用 Internet 服务管理器用户界面来配置应用程序的 IIS 辅助进程。

  注意:配置 IIS 6 以在 IIS 5.0 隔离模式下运行 ASP.NET 时,无法使用 ASP.NET 2.0。

  时间值采用“hours:minutes:seconds”形式。 如果只给出一个数字而没有冒号,该值将被视为分钟;也就是说 timeout="4" 等于 timeout="00:04:00"。

  如果 ASP.NET 应用程序导致 ASP.NET 辅助进程(在 Windows 2000 和 Windows XP Professional 上为 aspnet_wp.exe,在 Windows Server 2003 上为 w3wp.exe)重新启动,同时出现错误消息,指出重新启动可能是由于死锁状态而造成的,则应该增大 responseDeadlockInterval 特性。

域控制器和本地 ASPNET 帐户

  如果您将 .NET Framework 1.1 版本安装在一个域控制器上,安装过程将不会创建本地 ASPNET 帐户。 而 ASP.NET 应用程序以其他标识运行,如下所示:

  • 在运行 Windows 2000 Server 的域控制器上,ASP.NET 应用程序以 IWAM_machinename 标识运行。

  • 在运行 Windows Server 2003 的域控制器上,ASP.NET 应用程序以 NETWORK SERVICE 标识运行(与 IIS 隔离模式无关)。

在有些情况下,在域控制器上运行 ASP.NET 要求您采取额外的步骤才能使安装正常进行。 有关在域控制器上运行 .NET Framework 1.1 版的更多信息,请转到知识库 (KB) 搜索页面并参见文章 Q824308“IWAM Account is Not Granted the Impersonate Privilege for ASP.NET 1.1 on Windows 2000 Domain Controller with SP4”(在安装了 SP4 的 Windows 2000 域控制器上没有授予 IWAM 帐户用于 ASP.NET 1.1 的模拟特权)。有关在域控制器上运行 .NET Framework 1.0 版的更多信息,请转到知识库 (KB) 搜索页面并参见文章 Q315158“ASP.NET Does Not Work with the Default ASPNET Account on a Domain Controller”(ASP.NET 不与域控制器上的默认 ASPNET 帐户一起工作)。

在注册表中存储用户名和密码

要加密用户名和密码并将它们存储在注册表中,请按照下面的示例所示设置 userName 和 password 特性。

 
复制
   userName="registry:HKLM\Software\AspNetProcess,Name"
   password="registry:HKLM\Software\AspNetProcess,Pwd"

字符串中位于关键字 registry 之后和逗号 (,) 之前的部分表示 ASP.NET 打开的注册表项的名称。 逗号 (,) 之后的部分包含一个字符串值名称,ASP.NET 从此名称中读取凭据。 必须有逗号 (,) 并且凭据必须存储在 HKLM 配置单元中。 如果配置格式不正确,则 ASP.NET 不会启动辅助进程,然后将显示造成当前帐户创建失败的代码路径。

凭据必须为 REG_BINARY 格式,并且包含 Windows API 函数 CryptProtectData 调用的输出。 您可以使用 Aspnet_setreg.exe 创建加密的凭据并将它们存储在注册表中。 Aspnet_setreg.exe 使用 CryptProtectData 来完成加密。 若要下载 Aspnet_setreg.exe 以及 Microsoft Visual C++ 源代码和文档,请转到 ASP.NET 网站并搜索“aspnet_setreg”。

应该对存储加密凭据的密钥的访问权限进行配置,以便仅向 Administrators 和 SYSTEM 提供访问权。 由于密钥会被作为 SYSTEM 运行的 ASP.NET 进程读取,因此请设置以下权限:

 
复制
Administrators:F
SYSTEM:F
CREATOR OWNER:F 
ProcessAccount: R

这有助于以下列方法保护数据:

  • ACL 权限要求访问数据的身份是 Administrator。

  • 攻击者必须在服务器上运行代码 (CryptUnprotectData) 才能恢复帐户的凭据。

默认配置

  下面的默认 processModel 元素不是在 Machine.config 文件或根 Web.config 文件中显式配置的。 而是由应用程序返回的默认配置。

<processModel 
   enable="true" 
   timeout="Infinite" 
   idleTimeout="Infinite" 
   shutdownTimeout="00:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10" 
   memoryLimit="60" 
   webGarden="false" 
   cpuMask="0xffffffff" 
   userName="machine" 
   password="AutoGenerate" 
   logLevel="Errors" 
   clientConnectedCheck="00:00:05" 
   comAuthenticationLevel="Connect" 
   comImpersonationLevel="Impersonate" 
   responseDeadlockInterval="00:03:00" 
   responseRestartDeadlockInterval="00:03:00" 
   autoConfig="true" 
   maxWorkerThreads="20" 
   maxIoThreads="20" 
   minWorkerThreads="1" 
   minIoThreads="1" 
   serverErrorMessageFile="" 
   pingFrequency="Infinite" 
   pingTimeout="Infinite" 
   asyncOption="20" 
   maxAppDomains="2000" 
/>  

  下面的默认 processModel 元素是在 .NET Framework 1.0 和 1.1 版的 Machine.config 文件中配置的。

<processModel
   enable="true"
   timeout="Infinite"
   idleTimeout="Infinite"
   shutdownTimeout="0:00:05" 
   requestLimit="Infinite" 
   requestQueueLimit="5000" 
   restartQueueLimit="10"
   memoryLimit="60" 
   webGarden="false"
   cpuMask="0xffffffff"
   userName="machine"
   password="AutoGenerate"
   logLevel="Errors"
   clientConnectedCheck="0:00:05"
   comAuthenticationLevel="Connect"
   comImpersonationLevel="Impersonate"
   responseRestartDeadlockInterval="00:09:00"
   responseDeadlockInterval="00:03:00" 
   <!-- In the .NET Framework version 1.1, the next two attributes are
        set to 20. -->
   maxWorkerThreads="25"
   maxIoThreads="25"
/>

 

配置节处理程序

ProcessModelSection

配置成员

ProcessModel

可配置的位置

Machine.config

要求

Microsoft Internet 信息服务 (IIS) 版本 5.0、5.1 或 6.0

.NET Framework 版本 1.0、1.1 或 2.0

Microsoft Visual Studio 2003 或 Visual Studio 2005

 

  参考地址:https://msdn.microsoft.com/zh-cn/library/7w2sway1.aspx

posted on 2016-10-10 10:11  Now,DayBreak  阅读(3921)  评论(1编辑  收藏  举报