Поделиться через


Практическое руководство. Создание и регистрация или отмена регистрации классификатора запросов

Дата последнего изменения: 3 марта 2011 г.

Применимо к: SharePoint Foundation 2010

В этом разделе описывается регистрация и отмена регистрации классификатора HTTP-запросов в системе мониторинга производительности и регулирования HTTP-запросов Microsoft SharePoint Foundation.

Важное примечаниеВажно!

В примере, приведенном в этом разделе, используется консольное приложение. Независимо от типа проекта важно задать правильную целевую версию .NET Framework и процессор. Проект должен быть предназначен для версии Microsoft .NET Framework 3.5 (а не Microsoft .NET Framework 4). Целевым процессором должен быть Любой процессор или x64. Сведения о том, как выбрать правильное значение, см. в разделе Правильное задание конечной среды и процессора. По умолчанию целевой процессор — x86. Чтобы изменить его, щелкните правой кнопкой имя проекта в обозревателе решений, а затем выберите Свойства. Можно изменить процессор на вкладке Построение с помощью раскрывающегося списка Целевая платформа.

Хранение классификаторов HTTP-запросов

Классификаторы HTTP-запросов в системе регулирования HTTP-запросов хранятся в базе данных конфигураций фермы SharePoint Foundation в виде объектов класса, производного от класса SPRequestThrottleClassifier. Эти объекты являются элементами коллекции только для чтения, которая хранится в свойстве ThrottleClassifiers объекта SPHttpThrottleSettings, который сам хранится в свойстве HttpThrottleSettings веб-приложения.

Создание решения Visual Studio

  1. Создайте проект консольного приложения в Microsoft Visual Studio, задайте целевую версию .NET Framework и тип процессора.

  2. Добавьте ссылку на библиотеку Microsoft.SharePoint.dll в проект. Она размещена в %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI.

  3. Откройте файл program.cs, задайте необходимое пространство имен и имя класса и добавьте инструкции using для пространств имен Microsoft.SharePoint, Microsoft.SharePoint.Administration и Microsoft.SharePoint.Utilities. Программа должна выглядеть следующим образом:

    using System;
    using Microsoft.SharePoint; 
    using Microsoft.SharePoint.Administration;
    using Microsoft.SharePoint.Utilities;
    
    namespace Contoso.SharePoint.Utilities
    {
        class RequestClassifierRegistrar
        {
            static void Main(string[] args)
            {
    
            }
    // end Main
        }
    }
    

Создание и регистрация классификатора запросов

  1. В методе Main получите ссылку на веб-приложение и затем получите ссылку на параметры регулирования, вызвав метод GetHttpThrottleSettings(SPPersistedObject). В следующем примере показано, как это сделать.

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
  2. В методе Main вызовите конструктор для одного из классов, производных от класса SPRequestThrottleClassifier. В этом примере используется класс SPHttpFileExtensionThrottleClassifier. Объекты этого класса классифицируют запрос в соответствии с расширением имени файла запрошенного ресурса. Конструктор класса принимает параметр String, в котором задано расширение имени файла (включая начальную точку "."), и параметр SPRequestThrottleLevel, в котором задаются условия, при которых осуществляется регулирование запросов ресурсов с указанным расширением имени файла. В этом примере указывается, что запросы для DOCX-файлов должны блокироваться, когда рабочий процесс, обслуживающий запрос, находится в режиме регулирования FirstStage.

    SPHttpFileExtensionThrottleClassifier docxClassifier = new SPHttpFileExtensionThrottleClassifier(".docx",SPRequestThrottleLevel.FirstStage);
    
  3. В методе Main вызовите метод AddThrottleClassifier(SPRequestThrottleClassifier), передав в качестве параметра новый классификатор.

    throttleSettings.AddThrottleClassifier(docxClassifier);
    
    СоветСовет

    AddThrottleClassifier(SPRequestThrottleClassifier) создает исключение ArgumentException, если для такого же расширения и уровня регулирования классификатор уже существует. Рассмотрите возможность реализовать в коде проверку на наличие идентичных классификаторов перед вызовом AddThrottleClassifier(SPRequestThrottleClassifier).

    ПримечаниеПримечание

    При наличии более одного классификатора для одного расширения имени файла, что возможно, только если у них разные уровни регулирования, применяться будет классификатор с самым строгим уровнем регулирования. Например, если один классификатор для SVC-файла ресурса имеет уровень регулирования FirstStage, а другой классификатор для SVC-файла ресурса имеет уровень SecondStage, то совпадающие запросы будут регулироваться на первом этапе. Соответственно, нет смысла иметь больше одного классификатора для данного расширения.

    В объектной модели имеется три других класса, производных от класса SPRequestThrottleClassifier. Дополнительные сведения см. в разделе Регулирование запросов. Поскольку эти классы используют характеристики HTTP-запросов, отличные от расширения имени файла ресурса, возможно, что данный запрос будет соответствовать нескольким классификаторам. В этом сценарии регулирование запросов будет выполняться в соответствии с самым строгим классификатором. Например, если запрос соответствует классификатору с уровнем регулирования FirstStage и также соответствует классификатору с уровнем регулирования SecondStage, то запрос будет заблокирован, если рабочий процесс находится на первом этапе режима регулирования.

Отмена регистрации классификатора запросов

  • Отмена регистрации классификатора запросов похожа на регистрацию за исключением того, что в коде вызывается метод RemoveThrottleClassifierAt(Int32), которому передается индекс классификатора в начинающейся с нуля коллекции ThrottleClassifiers свойства HttpThrottleSettings веб-приложения. Код в следующем примере удаляет последний классификатор.

    Uri webApplicationUri = new Uri("Http://localhost/");
    SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri);
    SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
    
    throttleSettings.RemoveThrottleClassifierAt(throttleSettings.ThrottleClassifiers.Count - 1);   
    

См. также

Концепции

Регулирование запросов