网站的默认限制 <limits>
概述
<siteDefaults>
元素的 <limits>
元素配置用于限制 Web 服务器的客户端请求的带宽量、连接数或连接超时的默认设置。
注意
如果在特定站点的 <siteDefaults>
部分和 <site>
部分中都配置了 <limits>
元素,则会将 <site>
部分中的配置用于该站点。
兼容性
版本 | 说明 |
---|---|
IIS 8.5 | <limits> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <limits> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <limits> 元素在 IIS 7.5 中未进行修改。 |
IIS 7.0 | IIS 7.0 中引入了 <siteDefaults> 元素的 <limits> 元素。 |
IIS 6.0 | <limits> 元素替换以下 IIS 6.0 元数据库设置:
|
安装
<siteDefaults>
元素的 <limits>
元素包含在 IIS 7 及更高版本的默认安装中。
操作方式
如何为服务器配置默认连接限制选项
打开 Internet Information Services (IIS) 管理器:
如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:
- 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows 8 或 Windows 8.1:
- 按住 Windows 键,按字母 X,然后单击“控制面板”。
- 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:
- 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”。
如果使用的是 Windows Vista 或 Windows 7:
- 在任务栏上,单击“开始”,然后单击“控制面板”。
- 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
在“连接”窗格中,然后单击“站点”节点。
在“站点”窗格中,单击“操作”窗格中的“设置网站默认值...”。
在“网站默认值”对话框中,展开“限制”,指定限制选项,然后单击“确定”。
配置
特性
属性 | 说明 |
---|---|
connectionTimeout |
可选的 timeSpan 属性。 指定 IIS 在断开被视为处于非活动状态的连接之前等待的时间(以秒为单位)。 由于以下原因,连接可被视为处于非活动状态:
00:02:00 (2 分钟)。 |
maxBandwidth |
可选 uint 属性。 指定用于站点的最大网络带宽(以字节/秒为单位)。 使用此设置有助于防止 IIS 活动使网络过载。 默认值为 4294967295 。 |
maxConnections |
可选 uint 属性。 指定站点的最大连接数。 使用此设置可以限制同时建立的客户端连接数。 默认值为 4294967295 。 |
maxUrlSegments |
可选 uint 属性。 指定 URL 中允许的最大段数。 默认值为 32 。 |
子元素
无。
配置示例
以下配置示例指定 IIS 7 和更高版本的默认 limits
选项。
<system.applicationHost>
<sites>
<siteDefaults>
<limits connectionTimeout="00:02:00" />
</siteDefaults>
</sites>
</system.applicationHost>
代码示例
下面的代码示例将 IIS 7 及更高版本的默认 limits
选项配置为 3 分钟 connectionTimeout
。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/sites /siteDefaults.limits.connectionTimeout:"00:03:00" /commit:apphost
注意
使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost
。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
ConfigurationElement siteDefaultsElement = sitesSection.GetChildElement("siteDefaults");
ConfigurationElement limitsElement = siteDefaultsElement.GetChildElement("limits");
limitsElement["connectionTimeout"] = TimeSpan.Parse("00:03:00");
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")
Dim siteDefaultsElement As ConfigurationElement = sitesSection.GetChildElement("siteDefaults")
Dim limitsElement As ConfigurationElement = siteDefaultsElement.GetChildElement("limits")
limitsElement("connectionTimeout") = TimeSpan.Parse("00:03:00")
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");
var siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults");
var limitsElement = siteDefaultsElement.ChildElements.Item("limits");
limitsElement.Properties.Item("connectionTimeout").Value = "00:03:00";
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")
Set siteDefaultsElement = sitesSection.ChildElements.Item("siteDefaults")
Set limitsElement = siteDefaultsElement.ChildElements.Item("limits")
limitsElement.Properties.Item("connectionTimeout").Value = "00:03:00"
adminManager.CommitChanges()