如何:创建新的请求分类器

上次修改时间: 2015年3月9日

适用范围: SharePoint Foundation 2010

本主题介绍如何创建新型 HTTP 请求分类器,以扩展 Microsoft SharePoint Foundation 的性能监视和请求限制系统。

请求分类器类

Microsoft SharePoint Foundation 内置了一些请求分类器类型。每个分类器均可根据请求的一组具体特征对 HTTP 请求进行分类。下表显示了这些类以及每个类可用来定义的请求类别的类型。

类型

类别

SPHttpFileExtensionThrottleClassifier

针对具有指定文件扩展名的资源的请求

SPHttpHeaderThrottleClassifier

包含指定标头或指定标头具有指定值的请求

SPHttpUserAgentAndMethodClassifier

具有指定用户代理或使用指定 HTTP 方法的请求

SPSearchCrawlingRequestClassifier

来自搜索爬网程序的请求

使用其中一个类几乎可以创建所需的任何类型的分类器对象。但是,如果这些类均无法满足您的需要,则可从 SPRequestThrottleClassifier 类派生新的请求分类器类。

提示提示

请记住,并不是需要管理其限制的每种请求类型都需要新类。例如,SharePoint Foundation 没有内置 SPHttpDOCXThrottleClassifier 来管理对 .docx 文件的请求限制,也没有内置 SPHttpSVCThrottleClassifier 来管理对 REST (Representational State Transfer) 服务的请求。但它具有更通用的 SPHttpFileExtensionThrottleClassifier。可为特定文件扩展名创建此类的特定对象。因此,如果从 SPRequestThrottleClassifier 派生的任何内置类均不考虑现有请求特征类别,则只需从 SPRequestThrottleClassifier 派生新类。

派生新类

至少需要执行两个任务才能创建新分类器类,并且始终需要执行另外两个任务。至少需要执行以下任务:

  • 替代 ThrottleLevel 属性,该属性指定在哪个限制阶段(如果有)阻止匹配请求。您可以指定 FirstStage(工作进程运行状况不佳)、SecondStage(工作进程运行状况不佳的时间至少有 60 秒)或 Never。(对于与任何分类器都不匹配的请求,系统默认行为是在第一阶段阻止这些请求,因此您必须为应免除限制的任何请求专门创建一个限制级别为 Never 的分类器对象。)ThrottleLevel 属性为只读属性。如果类的每个对象都应始终具有相同的限制级别,则实现该属性将始终返回该级别。或者,实现该属性以返回支持字段的值,该字段由类构造函数设置,且可能具有默认值。

  • 替代 Match(HttpRequest) 方法。此方法包含的逻辑可确定分类器对象是否将 HTTP 请求分类为匹配请求。因此,它可根据本主题前面的表中的含义有效定义分类器的"类别"。例如,请参阅表中四个类的 Match 方法。

始终需要执行的其他两项任务如下所示:

  • 根据替代 Match(HttpRequest) 方法时的逻辑需要添加更多属性和帮助程序方法。有关示例,还请参阅表中的类。

  • 为类添加构造函数。通常,需要构造函数来设置 ThrottleLevel 属性的值,还可能要设置类中其他属性的值。

请参阅

任务

如何:创建和注册或取消注册请求分类器

概念

请求限制