Web APIおよびOwinで.NET Frameworkエージェントをインストール
.NET Frameworkエージェントは、Open Web Interface for .NET (OWIN)でセルフホストされるWeb APIアプリケーションの解析をサポートします。Web APIは、コマンドラインアプリケーションやWindowsサービスとしてデプロイできます。
注記
SystemWebのHttpModuleを使用してIIS統合パイプラインにホストされているWeb APIアプリケーションや、OWINホストでデプロイされているWeb APIアプリケーションはサポート対象外です。
.NET FrameworkエージェントのWindowsインストーラを使用して、.NET Frameworkエージェントをインストールします。
OWINホストのWeb APIをどのようにデプロイするかによって、環境変数を設定します。
コマンドラインアプリケーションとしてデプロイ:OWINをセルフホストにするために使用されるコマンドラインアプリケーションを実行する前に、以下の環境変数を設定します。
環境変数
値
COR_ENABLE_PROFILING
1
COR_PROFILER
{EFEB8EE0-6D39-4347-A5FE-4D0C88BC5BC1}
COR_PROFILER_PATH_32
C:\Program Files\Contrast\dotnet\runtimes\win-x86\native\ContrastProfiler.dll
COR_PROFILER_PATH_64
C:\Program Files\Contrast\dotnet\runtimes\win-x64\native\ContrastProfiler.dll
注記
COR_PROFILER_PATH_32
/COR_PROFILER_PATH_64
は、.NET Frameworkエージェントのインストールで選択したインストールディレクトリと一致する必要があります。Windowsサービスとしてデプロイ:
Web APIアプリケーションを含むサービスをインストールします。サービスの名前を確認します。
サービスのレジストリキーの下に、
Environment
という名前のREG_MULTI_SZ
値を作成します。既にEnvironment
値がある場合は、既存の値の下に新しい値を追加します。必要な環境変数を設定します。各環境変数はキーと値をペアにして、それぞれ改行してください。各サービスに固有の環境変数は、そのサービスのレジストリキーの下に設定できます。サービスのレジストリキーは次の場所にあります:
HKLM\SYSTEM\CurrentControlSet\Services\YourServiceName
環境変数
値
COR_ENABLE_PROFILING
1
COR_PROFILER
{EFEB8EE0-6D39-4347-A5FE-4D0C88BC5BC1}
COR_PROFILER_PATH_32
C:\Program Files\Contrast\dotnet\runtimes\win-x86\native\ContrastProfiler.dll
COR_PROFILER_PATH_64
C:\Program Files\Contrast\dotnet\runtimes\win-x64\native\ContrastProfiler.dll
CONTRAST_CONFIG_PATH
C:\ProgramData\contrast\dotnet\contrast_security.yaml
注記
COR_PROFILER_PATH_32
/COR_PROFILER_PATH_64
は、.NET Frameworkエージェントのインストールで選択したインストールディレクトリと一致する必要があります。
サービスを再起動して、新しい値をロードします。必要な環境変数を設定するために、以下のPowerShellスクリプトを使用できます。
param ( # Name of the service that it was given at installation. [Parameter(Mandatory=$true)] [string] $ServiceName, # Path to the 64-bit Contrast profiler DLL. # Defaults to: "C:\Program Files\Contrast\dotnet\runtimes\win-x64\native\ContrastProfiler.dll" [string] $ProfilerPath64 = "C:\Program Files\Contrast\dotnet\runtimes\win-x64\native\ContrastProfiler.dll", # Path to the 32-bit Contrast profiler DLL. # Defaults to: "C:\Program Files\Contrast\dotnet\runtimes\win-x86\native\ContrastProfiler.dll" [string] $ProfilerPath32 = "C:\Program Files\Contrast\dotnet\runtimes\win-x86\native\ContrastProfiler.dll", # Path to the Contrast agent configuration YAML file. # Defaults to: "C:\ProgramData\contrast\dotnet\contrast_security.yaml" [string] $ConfigYamlPath = "C:\ProgramData\contrast\dotnet\contrast_security.yaml" ) if (-Not (Test-Path -Path $ProfilerPath64 -PathType Leaf)) { Write-Host "Cannot find 64-bit profiler DLL at path `"$ProfilerPath64`"." exit 1 } if (-Not (Test-Path -Path $ConfigYamlPath -PathType Leaf)) { Write-Host "Cannot find configuration YAML file at path `"$ConfigYamlPath`"." exit 1 } if (-Not (Test-Path -Path $ProfilerPath32 -PathType Leaf)) { Write-Host "Cannot find 32-bit profiler DLL at path `"$ProfilerPath32`"." exit 1 } # Check if there is a service with the specified name installed. $service = Get-Service -Name $ServiceName -ErrorAction Ignore if ($null -Eq $service) { Write-Host "The service `"$ServiceName`" was not found." exit 2 } # Create value for multiline registry string. $values = @( "COR_ENABLE_PROFILING=1", "COR_PROFILER={EFEB8EE0-6D39-4347-A5FE-4D0C88BC5BC1}", "COR_PROFILER_PATH_64=$ProfilerPath64", "COR_PROFILER_PATH_32=$ProfilerPath32", "CONTRAST_CONFIG_PATH=$ConfigYamlPath" ) $registryKey = "HKLM:\SYSTEM\CurrentControlSet\Services\$ServiceName" # Check if the Environment value already exists. $environmentValue = Get-ItemProperty -Path $registryKey -Name "Environment" -ErrorAction Ignore if ($null -Ne $environmentValue) { # Add the Contrast environment variables to the existing variables. $existingValues = [System.Collections.ArrayList]@($environmentValue.Environment) foreach ($item in $values) { $idx = $existingValues.Add($item) } $values = $existingValues } # Set the environment variables for the service. Set-ItemProperty -Path $registryKey -Type MultiString -Name "Environment" -Value $values # Restart the service so it picks up the new environment variables. Restart-Service -Name $ServiceName