.NETに関する備考と例
以下のセクションは、.NET エージェント構成で使用される Getter チェーンに適用されます。
パラメータの型宣言
.NETエージェントはパラメータのタイプを以下の方法で認識します。
- 辞書、つまりプロパティアクセサーに関連付けられているあらゆるものは、文字列にデフォルト設定されている通常のパラメータセットを使用。
- 配列は単精度整数をパラメータとして使用。
したがって、0 string/0 get_Item 0 int/0
Getter チェーンが、デフォルトタイプ以外のパラメータを持つメソッドを使用する場合、パラメータタイプを宣言する必要があります。
-
以下は、オーバーロードされた
Susbstring()メソッドを解決するパラメータタイプの宣言方法を示しています。フォワードスラッシュがタイプセパレータの機能を果たしています。GetAddress(appdynamics, sf).Substring(int/0, int/10)たとえば、
GetAddress(appdynamics, sf)が「303 2nd St, San Francisco, CA 94107」を返した場合、完全な Getter チェーン式では「303 2nd St」が返されます。 -
以下の例は、浮動小数点数パラメータ、論理値パラメータ、整数パラメータをとるユーザ定義メソッドのパラメータタイプの宣言方法を示しています。フォワードスラッシュがタイプセパレータの機能を果たしています。
GetAddress(appdynamics, sf).MyMethod(float/0\\.2, boolean/true, boolean/false, int/5)
インデックス付きプロパティおよび辞書の値へのアクセス
Getterチェーンが辞書オブジェクトにアクセスする場合、以下の構文を使ってその値にアクセスできます。
- キー「
suze.smith」の値を返す例。UserDictionary.[string/suze\\.smith] - 以下の例では、暗黙的 Getter を使用してキー「suze.smith」の値を返す。
UserDictionary.get_Item(suze\\.smith)
.NET Getterチェーンの文字または正規表現の一致による分割
文字による一致、または正規表現パターンとの一致により文字列として、値を分割することができます。分割オペレーションの結果は文字列または文字の配列で、Getter チェーンで配列インデックス値によって参照できます。
以下の例は、Getterチェーンにおける文字と文字列の正規表現分割オペレーションの使用方法を示しています。
文字による分割
-
以下のチェーンは、フォワードスラッシュ文字で URL を分割する。この場合、最初のスラッシュはタイプセパレータとして機能。Getterチェーンは配列の4つ目のアイテムを返す。
GetUrl().Split(char[]//).[3]エージェントがこの Getter チェーンを URL http://howdyworld.example.com/Search/Airfare に適用した場合は、「Search」が返される。
-
次の例では、フォワードスラッシュ文字で分割され、その結果は配列の長さとなる。
GetUrl().Split(char[]//).Length -
次はセミコロン区切り文字を使用する URI のトランザクション分割ルールの例。Getter チェーンはフォワードスラッシュで分割した後、4 番目の要素がセミコロンで分割される。
GetUri().Split(char[]//).[3].Split(char[]/;).[0]エージェントがこの Getter チェーンを URL
http://HowdyWorld.example.com/create-user;sessionid=BE7F31CC0235C796BF8C6DF3766A1D00?act=Add&uid=c42ab7ad-48a7-4353-bb11-0dfeabb798b5に適用した場合は、create-userが返される。
正規表現による分割
文字列を基にしたパターン一致で値を分割すると、さらにコントロールが可能です。特に、リクエスト本文内におけるコンテンツの一致など、複雑なマッチングが必要となる環境でパターン一致が役立ちます。
次に、Getter チェーンが GetAddress() で返される値を分割する例を示します。
GetAddress().Split(string/\\W+).[6]303 2nd St, San Francisco, CA 94107 CA などのアドレスを指定
HTTPリクエスト用のGetterチェーンの作成
.NETエージェントでは、HTTPリクエスト用のGetterチェーンに特別な構文が必要です。
- ASP.NET WebForms、MVC、および MVC WebAPI アプリケーションの場合、
System.Web.HttpRequestオブジェクトに基づいて Getter チェーンを作成します。 - フルフレームワーク上の ASP.NET Core の場合、Microsoft.AspNetCore.Http.Internal.DefaultHttpRequest オブジェクトに基づいて Getter チェーンを作成します。
-
Getterチェーンの境界に線を引くには、次の構文を使用。
${myobject.myproperty} -
以下は、ユーザープリンシパルを決定する例。
${Context.User.Identity.Name}
この構文は、たとえば以下のような場所に使用します。
- HTTPリクエストデータコレクタ
- ASP.NETトランザクション検出のカスタム式