`

<processModel> 元素

阅读更多

<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。有关特殊名称 SystemMachine(它们不需要密码)的详细信息以及在注册表中存储加密工作进程凭据的信息,请参阅 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 帐户的密码是在安装时以加密形式生成的。如果在 userNamepassword 属性中给出了有效的凭据,则进程使用给定的帐户运行。userName 的另外一个特殊值为 System,密码为 AutoGenerate(它使用管理员帐户来运行进程,并且允许在此进程下运行的所有 ASP.NET 用户代码具有完全管理权限)。有关在用作域控制器的服务器上使用 ASP.NET 的信息,请参阅下面的“注释”部分。

userNamepassword 以明文形式存储在配置文件中。尽管 IIS 将不会为响应用户代理请求而传输 .config 文件,但是可通过其他方法读取配置文件,例如,通过对包含该服务器的域具有正确凭据的经过身份验证的用户访问。为了维护安全性,processModel 节支持在注册表中存储加密的 userNamepassword 属性。凭据必须采用由 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 设置。

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

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

要加密用户名和密码并将它们存储在注册表中,请按如下方式设置 userNamepassword

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

分享到:
评论

相关推荐

    sonatype与腾讯云配合构建项目到中央仓库.docx

    &lt;description&gt;a lightweight and practical micro-process framework&lt;/description&gt; &lt;url&gt;https://github.com/bryan31/liteflow&lt;/url&gt; &lt;!-- 其他许可证、开发者、问题管理及源码管理信息 --&gt; ``` 除了POM文件的基本...

    Xml做数据源模板显示新闻的源码.rar

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("newsItems", newsItems); StringWriter writer = new StringWriter(); template.process(model, writer); return writer.toString(); } } ``` ...

    bpmn图元到bpel的影射说明

    - **Process Error**: 映射到&lt;throw&gt;元素,抛出异常结束流程。 - **Compensate**: 映射到&lt;compensate&gt;元素,执行补偿操作。 - **Link**: 对应于&lt;invoke&gt;元素,完成请求后结束流程。 - **Multiple**: 影响到&lt;invoke&gt;...

    freemarker插件安装包和具体使用文档说明

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("title", "用户列表"); model.put("users", getUsers()); // 假设getUsers()返回User对象的List Configuration cfg = new Configuration(Configuration....

    spring + mail + 发送邮件完整 demo (含注释)

    public void sendEmail(String toEmail, String subject, Map&lt;String, Object&gt; model) throws Exception { // 创建邮件信息 SimpleMailMessage message = new SimpleMailMessage(); message.setTo(toEmail); ...

    ASP.NET配置文件Web.config详解

    在运行时对 Web.config 文件的修改不需要重启服务就可以生效(注:&lt;processModel&gt; 节例外)。当然 Web.config 文件是可以扩展的,可以自定义新配置参数并编写配置节处理程序以对它们进行处理。 二、web.config 配置...

    java生成word文档

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("title", "我的报告"); List&lt;Map&lt;String, String&gt;&gt; dataList = ... // 初始化数据列表 model.put("data", dataList); generator.generateWord("document....

    用freemarker生成word.zip

    Map&lt;String, Object&gt; dataModel = new HashMap&lt;&gt;(); dataModel.put("title", "报告标题"); List&lt;Attachment&gt; attachments = new ArrayList&lt;&gt;(); attachments.add(new Attachment("image1.jpg", Base64....

    ASP.NET配置文件Web.config 详细解释

    Web.config文件的结构允许在不同层级(如应用程序根目录、子目录)进行配置,并且在运行时对文件的修改可以立即生效,无需重启服务(除了某些特定情况,如&lt;processModel&gt;节)。 1. **&lt;authentication&gt; 节** - `...

    【ASP.NET编程知识】ASP.NET配置文件Web.config用法详解.docx

    Web.config 文件的修改不需要重启服务就可以生效(注:&lt;processModel&gt; 节例外)。当然 Web.config 文件是可以扩展的。你可以自定义新配置参数并编写配置节处理程序以对它们进行处理。 二、Web.config 配置文件...

    《jBPM学习笔记_框架设计简介》

    &lt;process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="simple"&gt; &lt;start-state name="开始"&gt; &lt;transition name="借款发起" to="填写借款申请"&gt; &lt;action name="Action_StartProcess" class=...

    freemarker生成doc方案.zip

    Map&lt;String, Object&gt; dataModel = new HashMap&lt;&gt;(); dataModel.put("title", "示例文档"); dataModel.put("content", "这是一段示例内容"); ``` 5. 渲染模板 使用Freemarker的`Template`类,结合数据模型渲染...

    java导出word文档

    Map&lt;String, Object&gt; dataModel = new HashMap&lt;&gt;(); dataModel.put("title", "示例标题"); dataModel.put("content", "这是示例内容。"); Configuration cfg = new Configuration(Configuration.VERSION_2_3_30...

    freemarker-2.3.16的API

    `Template`提供了`process(Object model, Writer out)`方法,用于根据给定的数据模型渲染模板,并将结果写入`Writer`。 5. **模板缓存**: 为了提高性能,Freemarker支持模板的缓存。可以通过`Configuration`的`...

    freemarker生成xml示例

    List&lt;Person&gt; persons = new ArrayList&lt;&gt;(); persons.add(new Person("张三", 25)); persons.add(new Person("李四", 30)); ``` 2. **Freemarker模板(Template)**:这是一个`.ftl`文件,里面定义了XML的结构和...

    freemarker入门demo

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("title", "Freemarker Demo"); model.put("user", "John Doe"); model.put("items", Arrays.asList( new Item("Item 1"), new Item("Item 2"), new ...

    java ckedit 使用

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("content", CKEditor获取的文本内容); // 输出HTML Writer out = new StringWriter(); template.process(model, out); String htmlOutput = out.toString...

    前端利用bpmn-js实现工作流

    BPMN-js是一个基于JavaScript的开源库,它允许开发者在Web应用中可视化和交互处理Business Process Model and Notation(业务流程模型与符号)图表。前端开发语言HTML、CSS和JavaScript是实现这一目标的基础,而HTML...

    FreeMarker入门指南(详细指南见附件)

    Map&lt;String, Object&gt; model = new HashMap&lt;&gt;(); model.put("user", new User("张三", "zhangsan@example.com")); // 加载模板 Template template = cfg.getTemplate("user.ftl"); // 输出生成的HTML try ...

Global site tag (gtag.js) - Google Analytics