processModel 元素(ASP.NET 设置架构)
更新:2007 年 11 月
配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置。processModel 节只能在 Machine.config 文件中进行设置,它影响服务器上运行的所有 ASP.NET 应用程序。
警告: |
---|
对 processModel 元素的更改将只有在辅助进程重新启动之后才生效,而不是像其他配置元素那样在更改设置之后立即生效。有关更多信息,请参见本主题后面的“备注”。 |
configuration 元素(常规设置架构)
system.web 元素(ASP.NET 设置架构)
processModel 元素(ASP.NET 设置架构)
<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 |
指定是否自动配置下列设置,以便基于计算机配置实现最佳性能:
这些值按照位于 https://support.microsoft.com/?id=821268 上的知识库文章进行设置。 此属性不影响 .NET Framework 客户端应用程序,而只影响 ASP.NET 应用程序。 autoConfig 属性可以为下列值之一。
除非以前已经有一个现有配置,否则 Machine.config 文件中的默认值为 True。 |
||||||||||||||||
clientConnectedCheck |
指定在 ASP.NET 检查以确定客户端是否已连接前在队列中保留的请求的长度。 默认值为 "00:00:05"(5 秒)。 |
||||||||||||||||
comAuthenticationLevel |
为 DCOM 安全性指定身份验证的级别。 comAuthenticationLevel 属性可以为下列值之一。
默认值为 Connect。 |
||||||||||||||||
comImpersonationLevel |
为 COM 安全性指定身份验证级别。 comImpersonationLevel 属性可以为下列值之一。
默认值为 Impersonate。 |
||||||||||||||||
cpuMask |
指定在多处理器服务器上哪些处理器 (CPU) 可以运行 ASP.NET 进程。该值指定一个位模式,它指示满足运行 ASP.NET 线程的条件的 CPU。例如,cpuMask 十六进制值 0x0d 表示位模式 1101。在具有四个 CPU 的计算机上,这指示可以在 CPU 0、2 和 3 上安排 ASP.NET 进程,但不可以在 CPU 1 上安排。ASP.NET 为满足条件的每个 CPU 启动一个辅助进程。如果 webGarden 属性为 true,则该属性会将辅助进程限制为满足条件的 CPU 的数目。最大辅助进程数目等于 CPU 的数目。如果 webGarden 为 false,则该属性被忽略,并且将只有一个辅助进程运行。这是默认行为。 默认值为 "0xffffffff"。 |
||||||||||||||||
enable |
指定是否启用进程模型。 enable 属性可以为下列值之一。
默认值为 true。 |
||||||||||||||||
idleTimeout |
以字符串格式 (hr:min:sec) 指定不活动期限,在该不活动期限后,ASP.NET 将自动结束辅助进程。 默认值为 Infinite。 |
||||||||||||||||
logLevel |
指定要记录到事件日志的事件类型。 logLevel 属性可以为下列值之一。
默认值为 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 的更多信息,以及有关在注册表中存储加密的辅助进程凭据的信息。
默认值为 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 的信息,请参见本主题后面的“备注”。
默认值为 "machine"。 |
||||||||||||||||
webGarden |
在与 cpuMask 属性一起使用时控制 CPU 关联。(多处理器 Web 服务器称作网络园)。 webGarden 属性可以为下列值之一。
默认值为 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 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"
/>
元素信息
配置节处理程序 |
|
配置成员 |
|
可配置的位置 |
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 |