要求分類子の作成および登録または登録解除を行う
最終更新日: 2011年3月3日
適用対象: SharePoint Foundation 2010
このトピックでは、Microsoft SharePoint Foundation パフォーマンスの監視と HTTP 要求調整システムを使用して、HTTP 要求分類子の登録と登録解除を行う方法について説明します。
重要 |
---|
このトピックの実行例では、コンソール アプリケーションが使用されます。プロジェクトの種類にかかわらず、正しいターゲットの .NET Framework と CPU を設定することが非常に重要です。このプロジェクトのターゲット .NET Framework は、Microsoft .NET Framework 3.5 である必要があります (Microsoft .NET Framework 4 ではない)。ターゲット CPU は [Any CPU] または [x64] である必要があります。この選択については、「[方法] 適切なターゲット フレームワークおよび CPU を設定する」を参照してください。通常、ターゲット CPU は既定で [x86] になります。これを変更するには、ソリューション エクスプローラーでプロジェクト名を右クリックし、[プロパティ] を選択します。[ビルド] タブで [プラットフォーム ターゲット] ボックスの一覧を使って CPU を変更できます。 |
HTTP 要求分類子の永続性
HTTP 要求調整システム内の HTTP 要求分類子は、SharePoint Foundation ファームの構成データベース内で、SPRequestThrottleClassifier クラスから派生したクラスのオブジェクトとして保持されます。このオブジェクトは、読み取り専用コレクションの要素であり、それ自体は Web アプリケーションの HttpThrottleSettings プロパティに保持される、SPHttpThrottleSettings オブジェクトの ThrottleClassifiers プロパティとして保管されます。
Visual Studio ソリューションを作成するには
Microsoft Visual Studio でコンソール アプリケーション プロジェクトを作成し、ターゲットの .NET Framework と CPU プラットフォームを設定します。
Microsoft.SharePoint.dll への参照をプロジェクトに追加します。これは %ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\ISAPI にあります。
program.cs ファイルを開き、適切な名前空間とクラス名を設定し、Microsoft.SharePoint、Microsoft.SharePoint.Administration、Microsoft.SharePoint.Utilities の各名前空間について using ステートメントを追加します。コードは次のようになります。
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 } }
要求分類子を作成および登録するには
Main メソッド内で、Web アプリケーションへの参照を取得し、次に GetHttpThrottleSettings(SPPersistedObject) メソッドを呼び出すことによって調整設定への参照を取得します。これを次の例で示します。
Uri webApplicationUri = new Uri("Http://localhost/"); SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri); SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication);
Main メソッドで、SPRequestThrottleClassifier クラスから派生したいずれかのクラスのコンストラクターを呼び出します。この例では、SPHttpFileExtensionThrottleClassifier クラスが使用されています。このクラスのオブジェクトは、要求されたリソースのファイル名拡張子に従って要求を分類します。クラスのコンストラクターは、ファイル名拡張子 (先頭の "." を含む) を指定する String パラメーター、および条件を指定する SPRequestThrottleLevel パラメーター (この条件の下で、指定されたファイル名拡張子を持つリソースの要求が調整される) を取ります。この例では、要求を処理するワーカー プロセスが FirstStage 調整モードになるたびに ".docx" ファイルの要求がブロックされるように指定されています。
SPHttpFileExtensionThrottleClassifier docxClassifier = new SPHttpFileExtensionThrottleClassifier(".docx",SPRequestThrottleLevel.FirstStage);
さらに Main メソッドで、AddThrottleClassifier(SPRequestThrottleClassifier) メソッドを呼び出し、新しい分類子をパラメーターとして渡します。
throttleSettings.AddThrottleClassifier(docxClassifier);
ヒント 同じ拡張子の分類子と調整レベルが既に存在する場合、AddThrottleClassifier(SPRequestThrottleClassifier) は ArgumentException をスローします。AddThrottleClassifier(SPRequestThrottleClassifier) を呼び出す前に、同一の分類子が存在するかどうかをコードでチェックすることを考慮してください。
注意
同じファイル名拡張子の分類子が複数存在する場合 (この状態は、これらの分類子の調整レベルが異なる場合のみ可能)、調整レベルの最も厳しい分類子が有効な分類子になります。たとえば, .svc リソースの 1 つの分類子に調整レベル FirstStage が指定され, .svc リソースの別の分類子に SecondStage が指定された場合、一致する要求は第 1 段階で調整されます。したがって、特定の拡張子に複数の分類子を持つ意味はありません。
オブジェクト モデルには、SPRequestThrottleClassifier クラスから派生する他の 3 つのクラスがあります。詳細については、「要求の調整」を参照してください。これらのクラスは、リソースのファイル名拡張子ではなく HTTP 要求の特性を使用するので、特定の要求が複数の分類子に一致する可能性があります。この場合、要求を調整するかどうかは、最も厳しい分類子によって決まります。たとえば、要求が、調整レベル FirstStage の分類子と調整レベル SecondStage の分類子に一致する場合、ワーカー プロセスが調整モードの第 1 段階の場合に要求はブロックされます。
要求分類子の登録を解除するには
要求分類子の登録解除は、コードで RemoveThrottleClassifierAt(Int32) メソッドを呼び出し、Web アプリケーションの HttpThrottleSettings プロパティの ThrottleClassifiers コレクションで、分類子のゼロから始まるインデックスを渡すこと以外は、要求分類子の登録に似ています。次の例のコードでは、最後の分類子が削除されます。
Uri webApplicationUri = new Uri("Http://localhost/"); SPWebApplication webApplication = SPWebApplication.Lookup(webApplicationUri); SPHttpThrottleSettings throttleSettings = SPHttpThrottleSettings.GetHttpThrottleSettings(webApplication); throttleSettings.RemoveThrottleClassifierAt(throttleSettings.ThrottleClassifiers.Count - 1);