如何:创建新的请求分类器
上次修改时间: 2015年3月9日
适用范围: SharePoint Foundation 2010
本主题介绍如何创建新型 HTTP 请求分类器,以扩展 Microsoft SharePoint Foundation 的性能监视和请求限制系统。
请求分类器类
Microsoft SharePoint Foundation 内置了一些请求分类器类型。每个分类器均可根据请求的一组具体特征对 HTTP 请求进行分类。下表显示了这些类以及每个类可用来定义的请求类别的类型。
类型 |
类别 |
---|---|
针对具有指定文件扩展名的资源的请求 |
|
包含指定标头或指定标头具有指定值的请求 |
|
具有指定用户代理或使用指定 HTTP 方法的请求 |
|
来自搜索爬网程序的请求 |
使用其中一个类几乎可以创建所需的任何类型的分类器对象。但是,如果这些类均无法满足您的需要,则可从 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 属性的值,还可能要设置类中其他属性的值。