<processModel> 元素
在 Internet 信息服务 (IIS) Web 服务器上配置 ASP.NET 进程模型设置。只能在 Machine.config 文件中设置 <processModel> 节,并且该节影响服务器上运行的所有 ASP.NET 应用程序。
警告 有关此元素的信息,请阅读“注释”部分。
配置结构的示例:
<configuration>
<system.web>
<processModel>
<processModel enable="true|false"
timeout="hrs:mins:secs|Infinite"
idleTimeout="hrs:mins:secs|Infinite"
shutdownTimeout="hrs:mins:secs|Infinite"
requestLimit="hrs:mins:secs|Infinite"
requestQueueLimit="num|Infinite"
restartQueueLimit="num|Infinite"
memoryLimit="percent"
cpuMask="num"
webGarden="true|false"
userName="username"
password="password"
logLevel="All|None|Errors"
clientConnectedCheck="hrs:mins:secs|Infinite"
responseDeadlockInterval="hrs:mins:secs|Infinite"
responseRestartDeadlockInterval="hrs:mins:secs|Infinite"
comAuthenticationLevel="Default|None|Connect|Call|
Pkt|PktIntegrity|PktPrivacy"
comImpersonationLevel="Default|Anonymous|Identify|
Impersonate|Delegate"
maxWorkerThreads="num"
maxIoThreads="num"/>
可选的属性
属性
选项
描述
clientConnectedCheck |
|
指定在 ASP.NET 检查连接的客户端之前,请求在队列中存在多长时间。 |
comAuthenticationLevel |
|
为 DCOM 安全指定身份验证级别。默认值为 Connect。 |
|
Default |
指定 DCOM 使用其正常的安全协商算法来确定身份验证级别。 |
|
None |
指定不进行身份验证。 |
|
Connect |
指定仅当客户端建立与服务器的关系时,DCOM 才对客户端凭据进行验证。 |
|
Call |
指定在每个远程过程调用开始时服务器收到请求的时候,DCOM 对客户端凭据进行验证。 |
|
Pkt |
指定 DCOM 验证收到的所有数据是否均来自预期的客户端。数据报传输始终使用 Pkt 身份验证。 |
|
PktIntegrity |
指定 DCOM 验证在客户端和服务器之间传输的数据是否未被修改。 |
|
PktPrivacy |
指定 DCOM 验证所有先前的级别并加密每个远程过程调用的参数值。 |
comImpersonationLevel |
|
指定 COM 安全的身份验证级别。 |
|
Default |
指定 DCOM 使用其正常的安全协商算法来确定模拟级别。 |
|
Anonymous |
指定客户端对服务器是匿名的。服务器可以模拟客户端,但模拟令牌不包含任何信息。在版本 1.1 中不支持 Anonymous。 |
|
Identify |
指定服务器可以获取客户端的标识。服务器可以模拟客户端以进行访问控制列表 (ACL) 检查,但它不能作为客户端访问系统对象。 |
|
Impersonate |
指定服务器进程在代表客户端操作时可以模拟客户端的安全上下文。可以使用此级别的模拟来访问本地资源,如文件。在此级别进行模拟时,只能在一个计算机边界传递模拟令牌。 |
|
Delegate |
指定服务器进程在代表客户端操作时可以模拟客户端的安全上下文。在使用掩饰代表客户端操作时,服务器进程也可以对外调用其他的服务器。在其他计算机上,服务器可以作为客户使用客户端的安全上下文访问本地和远程资源。在此级别进行模拟时,可以在任意数量的计算机边界传递模拟令牌。 |
cpuMask |
|
指定多处理器服务器上的哪些处理器可以运行 ASP.NET 进程。cpuMask 值指定一种位模式,它指示 CPU 可以运行 ASP.NET 线程。例如,cpuMask 十六进制值 0x0d 表示位模式 1101。在具有 4 个 CPU 的计算机上,它指示可以将 ASP.NET 进程安排在 CPU 0、2 和 3,但不能安排在 CPU 1 上。ASP.NET 为每个合格的 CPU 启动一个工作进程。如果将 webGarden 属性(参见下面)设置为 true,则 cpuMask 将工作进程限制为合格 CPU 的数量。(工作进程的最大允许数量等于 CPU 的数量。)默认情况下,启用所有的 CPU,并且 ASP.NET 为每个 CPU 启动一个进程。如果将 webGarden 设置为 false,则忽略 cpuMask 属性,并且只运行一个工作进程。 |
enable |
|
指定是否启用进程模型。 |
|
true |
指示进程模型已启用。 |
|
false |
指示进程模型未启用。 |
idleTimeout |
|
指定在 ASP.NET 自动结束工作进程之前,工作进程处于不活动状态的时间(采用时:分:秒字符串格式)。默认设置为 Infinite。 |
logLevel |
|
指定要记录到事件日志中的事件类型。 |
|
All |
指定记录所有的进程事件。 |
|
None |
指定不记录任何事件。 |
|
Errors |
指定只记录意外关闭、内存限制关闭和死锁关闭。Errors 为默认值。 |
maxWorkerThreads |
5 - 100 |
配置每个 CPU 上的进程使用的工作线程的最大数量。例如,如果在单处理器服务器上该值为 25,则 ASP.NET 使用运行时 API 将进程限制设置为 25 个。在双处理器服务器上,将该限制设置为 50。默认值为 20。maxWorkerThreads 的值必须大于或等于 <httpRuntime> 配置节中的 minFreeThread 属性设置。 |
maxIoThreads |
5 - 100 |
配置每个 CPU 上的进程使用的 I/O 线程的最大数量。例如,如果在单处理器服务器上该值为 25,则 ASP.NET 使用运行时 API 将进程限制设置为 25 个。在双处理器服务器上,将该限制设置为 50。默认值为 20。maxIoThreads 的值必须大于或等于 <httpRuntime> 配置节中的 minFreeThread 属性设置。 |
memoryLimit |
|
指定在 ASP.NET 启动新的进程和重新分配现有请求之前,允许工作进程占用的最大内存大小(总系统内存的百分比)。默认值是 60%。 |
password |
|
如果给出(与 userName 结合使用),则此属性导致工作进程以配置的 Windows 标识运行。默认值为 AutoGenerate。有关特殊名称 System 和 Machine(它们不需要密码)的详细信息以及在注册表中存储加密工作进程凭据的信息,请参阅 userName。 |
pingFrequency |
|
使用标准进程模型格式(时:分:秒)指定时间间隔,ISAPI 扩展按此间隔 ping 工作进程以查看它是否正在运行。如果工作进程在 pingTimeout 间隔内没有运行,则重新启动该工作进程。默认值为 30 秒钟。 |
pingTimeout |
|
使用标准进程模型格式(时:分:秒)指定重新启动未响应工作进程之前的时间间隔。ISAPI 扩展每隔 pingFrequency 时间间隔 ping 一次工作进程。如果工作进程在 pingTimeout 间隔内没有响应,则重新启动该进程。默认值为 5 秒钟。 |
requestLimit |
|
指定在 ASP.NET 自动启动新工作进程以替换当前进程之前允许的请求数。默认设置为 Infinite。 |
requestQueueLimit |
|
指定在 ASP.NET 开始给新请求返回“503 - 服务器太忙”错误之前队列中允许的请求数。默认值是 5000。 |
responseDeadlockInterval |
|
使用标准进程模型格式(时:分:秒)指定重新启动工作进程之前的时间间隔(如果满足以下条件):
默认值为 3 分钟。
|
responseRestartDeadlockInterval |
|
ASP.NET 不再使用此属性,并且仅出于向后兼容性的需要提供此属性。如果它已在配置文件中存在,则它不会引起配置错误。现在,出现死锁情况下的所有回收是由 responseDeadlockInterval 属性控制的。 |
serverErrorMessageFile |
|
如果给出,则它指定要使用的文件内容,而不是出现致命错误时给出的默认“服务器不可用”消息。文件位置是与 Machine.config 相对的,也可以是绝对文件路径。如果没有给出该属性,则使用默认的“服务器不可用”消息。 |
shutdownTimeout |
|
指定工作进程自行关闭前允许的分钟数。当超时到期时,ASP.NET 就会关闭工作进程。时间用时:分:秒字符串格式表示。默认值为 5 秒钟或 0:00:05。 |
timeout |
|
指定在 ASP.NET 启动新工作进程以替换当前进程之前的时间(以分钟为单位)。默认设置为 Infinite。 |
userName |
|
如果给出,则 userName 属性使用不同于默认进程标识的 Windows 标识运行 ASP.NET 工作进程。默认情况下,将 userName 设置为特殊值 Machine,并且进程运行使用的用户帐户为 ASPNET(在安装 ASP.NET 时自动创建的)。ASPNET 帐户的密码是在安装时以加密形式生成的。如果在 userName 和 password 属性中给出了有效的凭据,则进程使用给定的帐户运行。userName 的另外一个特殊值为 System,密码为 AutoGenerate(它使用管理员帐户来运行进程,并且允许在此进程下运行的所有 ASP.NET 用户代码具有完全管理权限)。有关在用作域控制器的服务器上使用 ASP.NET 的信息,请参阅下面的“注释”部分。
userName 和 password 以明文形式存储在配置文件中。尽管 IIS 将不会为响应用户代理请求而传输 .config 文件,但是可通过其他方法读取配置文件,例如,通过对包含该服务器的域具有正确凭据的经过身份验证的用户访问。为了维护安全性,processModel 节支持在注册表中存储加密的 userName 和 password 属性。凭据必须采用由 Windows 2000 和 Windows XP 数据保护 API (DPAPI) 加密功能加密的 REG_BINARY 格式。详细信息,请参阅下面的“注释”和“示例”部分。
|
webGarden |
|
在与 cpuMask 属性结合使用时控制 CPU 关系。(多处理器 Web 服务器称为“Web 园”。) |
|
true |
指示 cpuMask 属性用于指定哪些 CPU 适合运行 ASP.NET 进程。 |
|
false |
指示 CPU 的使用是由 Windows 操作系统调度的。忽略 cpuMask 属性并且只运行一个工作进程。默认值是 false。 |
注释
托管代码配置系统并不读取 <processModel> 配置设置。而是由非托管 DLL aspnet_isapi.dll 直接读取。重新启动 IIS 后,本节的更改才会生效。
如果在域控制器上安装 ASP.NET,必须采取特殊的步骤,否则安装无法正常进行。详细信息,请参阅位于 http://support.microsoft.com 的 Microsoft 知识库中的文章 CHS315158“ASP.NET 在域控制器上不能使用默认 ASPNET 帐户”。
当 ASP.NET 在 IIS 版本 6 本机模式下运行时,使用 IIS 6 进程模型并且忽略 <processModel> 节中的设置。要配置进程标识、回收或其他进程模型值,请使用 Internet 服务管理器用户界面为应用程序配置 IIS 工作进程。
时间值的格式为“时:分:秒”。如果只给出单个数字而没有冒号,则假定该值为分钟数;因此 timeout="4" 等同于 timeout="00:04:00"。
如果 ASP.NET 应用程序导致 ASP.NET 工作进程(Windows 2000 和 Windows XP Professional 上的 Aspnet_wp.exe 以及 Windows Server 2003 上的 W3wp.exe)重新启动,并给出一条错误消息,指示重新启动是由于怀疑的死锁状态造成的,则应该增加 responseDeadlockInterval 设置。
在注册表中存储用户名和密码
将用户名和密码存储在注册表中
要加密用户名和密码并将它们存储在注册表中,请按如下方式设置 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 调用的输出结果。您可以用 ASP.NET设置注册表控制台应用程序 (Aspnet_setreg.exe) 创建加密凭据并将其存储在注册表中,该应用程序使用 CryptProtectData 完成加密。要下载 Aspnet_setreg.exe 以及 Visual C++ 源代码和帮助,请访问网站 www.asp.net 并搜索“aspnet_setreg”。
您应该对存储加密凭据的注册表项配置访问权限,以便只对 Administrators 和 SYSTEM 提供访问。因为该注册表项将由作为 SYSTEM 运行的 ASP.NET 进程读取,您应该设置下列权限:
Administrators:F
SYSTEM:F
CREATOR OWNER:F
ProcessAccount:R
这将提供两道防线来保护数据:
- ACL 权限要求访问数据的标识为 Administrator。
- 攻击者必须在服务器上运行代码 (CryptUnprotectData) 以便恢复帐户的凭据。
示例
以下示例指定几个 <processModel> 配置设置。
<configuration>
<system.web>
<processModel
enable="true"
timeout="15"
idleTimeout="25"
shutdownTimeout="5"
requestLimit="1000"
requestQueueLimit="500"
responseDeadlockInterval="00:03:00"
responseRestartDeadlockInterval="Infinite"
memoryLimit="20"
webGarden="true"
maxWorkerThreads="25"
maxIoThreads="25"/>
</system.web>
</configuration>
以下示例指定将加密的用户名和密码存储在注册表用户定义的项 AspNetProcess
下面。
<configuration>
<system.web>
<processModel>
userName="registry:HKLM\Software\AspNetProcess,Name"
password="registry:HKLM\Software\AspNetProcess,Pwd"
</processModel>
</system.web>
</configuration>
要求
-
包含在:<system.web> 中
-
Web 平台:IIS 5.0、IIS 5.1、IIS 6.0
-
配置文件:Machine.config、Web.config
-
配置节处理程序:System.Web.Configuration.ProcessModelConfigurationHandler
http://doc.51windows.net/iismmc/?url=/iismmc/htm/aaconprocessmodelelement.htm
分享到:
相关推荐
<description>a lightweight and practical micro-process framework</description> <url>https://github.com/bryan31/liteflow</url> <!-- 其他许可证、开发者、问题管理及源码管理信息 --> ``` 除了POM文件的基本...
Map<String, Object> model = new HashMap<>(); model.put("newsItems", newsItems); StringWriter writer = new StringWriter(); template.process(model, writer); return writer.toString(); } } ``` ...
- **Process Error**: 映射到<throw>元素,抛出异常结束流程。 - **Compensate**: 映射到<compensate>元素,执行补偿操作。 - **Link**: 对应于<invoke>元素,完成请求后结束流程。 - **Multiple**: 影响到<invoke>...
Map<String, Object> model = new HashMap<>(); model.put("title", "用户列表"); model.put("users", getUsers()); // 假设getUsers()返回User对象的List Configuration cfg = new Configuration(Configuration....
public void sendEmail(String toEmail, String subject, Map<String, Object> model) throws Exception { // 创建邮件信息 SimpleMailMessage message = new SimpleMailMessage(); message.setTo(toEmail); ...
在运行时对 Web.config 文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然 Web.config 文件是可以扩展的,可以自定义新配置参数并编写配置节处理程序以对它们进行处理。 二、web.config 配置...
Map<String, Object> model = new HashMap<>(); model.put("title", "我的报告"); List<Map<String, String>> dataList = ... // 初始化数据列表 model.put("data", dataList); generator.generateWord("document....
Map<String, Object> dataModel = new HashMap<>(); dataModel.put("title", "报告标题"); List<Attachment> attachments = new ArrayList<>(); attachments.add(new Attachment("image1.jpg", Base64....
Web.config文件的结构允许在不同层级(如应用程序根目录、子目录)进行配置,并且在运行时对文件的修改可以立即生效,无需重启服务(除了某些特定情况,如<processModel>节)。 1. **<authentication> 节** - `...
Web.config 文件的修改不需要重启服务就可以生效(注:<processModel> 节例外)。当然 Web.config 文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。 二、Web.config 配置文件...
<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple"> <start-state name="开始"> <transition name="借款发起" to="填写借款申请"> <action name="Action_StartProcess" class=...
Map<String, Object> dataModel = new HashMap<>(); dataModel.put("title", "示例文档"); dataModel.put("content", "这是一段示例内容"); ``` 5. 渲染模板 使用Freemarker的`Template`类,结合数据模型渲染...
Map<String, Object> dataModel = new HashMap<>(); dataModel.put("title", "示例标题"); dataModel.put("content", "这是示例内容。"); Configuration cfg = new Configuration(Configuration.VERSION_2_3_30...
`Template`提供了`process(Object model, Writer out)`方法,用于根据给定的数据模型渲染模板,并将结果写入`Writer`。 5. **模板缓存**: 为了提高性能,Freemarker支持模板的缓存。可以通过`Configuration`的`...
List<Person> persons = new ArrayList<>(); persons.add(new Person("张三", 25)); persons.add(new Person("李四", 30)); ``` 2. **Freemarker模板(Template)**:这是一个`.ftl`文件,里面定义了XML的结构和...
Map<String, Object> model = new HashMap<>(); model.put("title", "Freemarker Demo"); model.put("user", "John Doe"); model.put("items", Arrays.asList( new Item("Item 1"), new Item("Item 2"), new ...
Map<String, Object> model = new HashMap<>(); model.put("content", CKEditor获取的文本内容); // 输出HTML Writer out = new StringWriter(); template.process(model, out); String htmlOutput = out.toString...
BPMN-js是一个基于JavaScript的开源库,它允许开发者在Web应用中可视化和交互处理Business Process Model and Notation(业务流程模型与符号)图表。前端开发语言HTML、CSS和JavaScript是实现这一目标的基础,而HTML...
Map<String, Object> model = new HashMap<>(); model.put("user", new User("张三", "zhangsan@example.com")); // 加载模板 Template template = cfg.getTemplate("user.ftl"); // 输出生成的HTML try ...