構成エディタ ツール (SvcConfigEditor.exe)
管理者と開発者は、Windows Communication Foundation (WCF) サービス構成エディタ (SvcConfigEditor.exe) のグラフィカル ユーザー インターフェイスを使用して、WCF サービスの構成設定を作成および変更できます。このツールを使用すると、XML 構成ファイルを直接編集せずに、WCF のバインディング、動作、サービス、および診断の設定を管理できます。
WCF 構成エディタ
サービス構成エディタには、WCF のサービスやクライアントを構成する手順をすべてガイドするウィザードが付属しています。エディタで直接編集する代わりにウィザードを使用することを強くお勧めします。
標準の System.Configuration スキーマに準拠する構成ファイルが既にいくつかある場合は、ユーザー インターフェイスを使用してバインディング、動作、サービス、および診断の固有の設定を管理できます。サービス構成エディタを使用すると、既存の WCF 構成ファイルの設定だけでなく、実行可能ファイル、COM+ サービス、および Web ホスト サービスの設定を管理できます。
WCF 構成設定は、構成ファイルの <system.serviceModel> セクションにあるため、エディタはこの要素の内容だけを操作し、同じファイル内の他の要素にはアクセスしません。
既存の構成ファイルに直接移動したり、サービス、仮想ディレクトリ、または COM+ サービスを含むアセンブリを選択することができます。エディタがその特定のサービスの構成ファイルを読み込むと、ユーザーは新しい要素を追加したり、構成ファイルの <system.serviceModel> セクションで入れ子になっている既存の要素を編集することができます。
エディタは、IntelliSense をサポートし、スキーマ準拠を強制します。結果として得られる出力は、構成ファイルのスキーマに準拠し、構文的に正しいデータ値を持つことが保証されます。ただし、エディタは構成ファイルのセマンティクスが有効であることは保証しません。つまり、エディタは構成ファイルが関連するサービスで有効に機能することは保証しません。
注意 : |
---|
要素を変更すると、エディタは構成ファイルからその構成要素を削除できません。たとえば、エディタを使用してエンドポイント名を空でない文字列に設定して保存すると、構成ファイルは次の内容になります。
<endpoint binding="basicHttpBinding" name="somename" />
そのエンドポイント名を削除するために名前を空の文字列に設定して保存しようとしても、構成ファイルには、name 属性が残ります。
<endpoint binding="basicHttpBinding" name="" />
属性を削除するには、別のテキスト エディタを使用して要素を手動で編集する必要があります。
特に、clientCredential エンドポイント動作の issueToken 要素を使用する場合は、この問題に注意する必要があります。具体的には、localIssuer サブ要素の address 属性を空の文字列にしないようにします。構成エディタを使用して既に address 属性を変更している場合にその属性を完全に削除したい場合は、構成エディタ以外のツールを使用して削除する必要があります。そうでない場合、属性は空の文字列を含むことになるため、アプリケーションは例外をスローします。
|
構成エディタの使用
サービス構成エディタは、次の Windows SDK のインストール場所にあります。
C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin\SvcConfigEditor.exe
サービス構成エディタを起動したら、[ファイル] メニューの [開く] を使用して、管理するサービスまたはアセンブリを参照できます。構成ファイルを直接開き、WCF /COM+ サービスを参照し、Web ホスト サービスの構成設定を開くことができます。
サービス構成エディタのユーザー インターフェイスは、次の領域に分割されています。
- ツリー ビュー ペイン : 構成要素をツリー構造で表示します。ノードを右クリックと、ツリーで操作を実行できます。
- タスク ペイン : 現在の要素の一般的なタスクを表示します。
- 詳細ペイン : ツリー表示で選択された構成ノードの詳細設定を表示します。
構成ファイルを開く
- サービス構成エディタを起動するには、コマンド ウィンドウで WCF のインストール場所に移動し、「SvcConfigEditor.exe」と入力します。
- [ファイル] メニューの [開く] を選択し、管理するファイルの種類をクリックします。
- [開く] ダイアログ ボックスで、管理する特定のファイルに移動し、ダブルクリックします。
ビューアは、構成のマージ パスを自動的にたどり、マージされた構成のビューを生成します。たとえば、ホストなしのサービスの実際の構成は、Machine.config と App.config の組み合わせです。変更があれば、SvcConfigEditor のアクティブ ファイルに適用されます。構成マージ パスの特定ファイルを編集する場合は、直接開く必要があります。
メモ : |
---|
構成ファイルが構成エディタ以外で変更されている場合、構成エディタは、現在開いている構成ファイルを再読み込みします。再読み込みが発生すると、エディタ内で永続的に保存されていないすべての変更が失われます。再読み込みが相次いで起こる場合は、構成ファイルに定期的にアクセスするサービス (バックグラウンドで実行するウイルス対策ソフトウェアなど) が原因と考えられます。この問題を解決するには、ファイルが開いているときに、構成エディタがそのファイルにアクセスできる唯一のプロセスであることを保証する必要があります。 |
サービス
[サービス] ノードは、構成ファイルの現在割り当てられているすべてのサービスを表示します。ツリー内の各サブノードは、構成ファイル内の <
services>
要素のサブ要素に対応します。
[サービス] ノードをクリックして、詳細ペインのサービスの概要ページでタスクを表示または実行できます。
新しいサービス構成の作成
新しいサービス構成は次の方法で作成できます。
- ウィザードの使用 : ウィザードを起動するには、タスク ペインまたは概要ページの [新しいサービスの作成] リンクをクリックします。[ファイル] メニューの [新しい項目の追加] を選択することでも起動できます。
- 手動による作成 : [サービス] ノードを右クリックし、[新しいサービス] を選択します。
新しいサービス エンドポイント構成の作成
新しいサービス エンドポイント構成は次の方法で作成できます。
- ウィザードの使用 : ウィザードを起動するには、タスク ペインまたは概要ページの [新しいサービス エンドポイントの作成...] リンクをクリックします。[ファイル] メニューの [新しい項目の追加] を選択することでも起動できます。
- 手動による作成 : サービスを作成したら、[エンドポイント] ノードを右クリックし、[新しいサービス エンドポイント] を選択します。
サービス構成の編集
- [サービス] ノードをクリックします。
- プロパティ グリッドで設定を編集します。
サービス エンドポイント構成の編集
- [サービス エンドポイン] ノードをクリックします。
- プロパティ グリッドで設定を編集します。
ベース アドレスの追加
- [ホスト] ノードをクリックします。
- [ベース アドレス] セクションの [新規作成...] ボタンをクリックします。
- ダイアログ ボックスにベース アドレスの URI を入力します。
- [OK] をクリックします。
メモ このツール内では <baseAddressPrefixFilters> の値は編集できません。この要素を追加または変更するには、テキスト エディタまたは Visual Studio を使用する必要があります。
クライアント
[クライアント] ノードは、構成ファイルのすべてのクライアント エンドポイントを表示します。ツリー内のすべてのサブノードは、構成ファイル内の <client> 要素のサブ要素に対応します。
[クライアント] ノードをクリックして、[詳細ペイン] のクライアントの概要ページ でタスクを表示または実行できます。
新しいクライアント エンドポイント構成の作成
新しいクライアント エンドポイント構成は次の方法で作成できます。
- ウィザードによる作成 : ウィザードを起動するには、タスク ペイン****または概要ページの [新しいクライアントの作成...] リンクをクリックします。[ファイル] メニューの [新しい項目の追加] を選択することでも起動できます。
- 手動による作成 : [クライアント] の下の [エンドポイント] ノードを右クリックし、[新しいクライアント エンドポイント] を選択します。
クライアント エンドポイント構成の編集
- [クライアント エンドポイント] ノードをクリックします。
- プロパティ グリッドで設定を編集します。
バインディング
バインディング構成は、エンドポイントでバインディングを構成するために使用されます。これらの構成設定は、[バインド] ノードに格納されます。エンドポイントはバインディング構成を名前で参照し、複数のエンドポイントは単一のバインディング構成を参照できます。
[バインド] ノードは、構成ファイルのすべてのバインディング設定を表示します。ツリー内のすべてのサブノードは、構成ファイル内の <bindings> 要素のサブ要素に対応します。
[バインド] ノードをクリックして、[詳細ペイン] のバインディングの概要ページでタスクを表示または実行できます。
新しいバインディング構成の作成
新しいバインディング構成は次の方法で作成できます。
- [バインド] ノードを右クリックし、[新しいバインド構成] を選択します。ダイアログ ボックスでバインディングの種類を選択し、[OK] をクリックします。
- [バインド] ノードを選択し、タスク ペインで [新しいバインド構成...] をクリックします。
- サービスまたはクライアントの概要ページで、[バインドの構成] フィールドの [クリックして作成] をクリックすると、対応するエンドポイントのバインディング構成が作成されます。
カスタム バインディングへのバインディング要素拡張の追加
- 拡張要素を追加するバインディングを選択します。
- [追加] をクリックします。
- 使用できる拡張一覧から、追加するバインディング要素拡張を選択します。複数の項目を選択するには、Ctrl キーを同時に押します。
- [追加] をクリックします。
カスタム バインディングの拡張位置の調整
カスタム バインディングは、スタックを形成するバインディング要素のコレクションです。スタックの各バインディング要素には、独自の構成設定があります。カスタム バインディング内のバインディング要素拡張の順序は、スタック内のそれらの位置を示します。スタック最上位の要素が最初に適用されます。順序を変更するには
- カスタム バインディング ノードを選択します。
- [Binding Element Extension Position] セクションでバインディング拡張要素の 1 つを選択します。
- 一覧の左側にある [Up] ボタンまたは [Down] ボタンを使用して、選択した要素の位置を変更します。
カスタム バインディングのバインディング要素拡張の構成の編集
- ツリー内のバインディング ノードを選択します。
- 編集する要素を含むカスタム バインディングを選択します。
- 編集するバインディング要素拡張を選択します。要素の設定が、編集場所の右ペインに表示されます。
動作
[動作] ノードは、現在構成ファイルに定義されている動作を表示します。
動作構成は、エンドポイントとサービスの動作を構成するために使用されます。これらの構成設定は、[サービス動作] と [エンドポイント動作] の下にある [詳細設定] ノードに格納されます。サービス動作はサービスによって使用され、エンドポイント動作はエンドポイントによって使用されます。
動作は、スタックを形成する拡張要素のコレクションです。スタック最上位の要素が最初に適用されます。各拡張要素は独自の構成を持つことができます。
新しい動作構成の作成
新しい動作構成は次の 2 つの方法で作成できます。
- 動作ノードの 1 つを右クリックし、[新しいエンドポイント動作の構成...] または [新しいサービス動作の構成...] を選択します。
- 動作ノードの 1 つを選択し、タスク ペインの [新しいエンドポイント動作の構成...] または [新しいサービス動作の構成...] をクリックします。
動作への動作要素拡張の追加
- 動作ノードのいずれかを選択します。
- 編集する動作を選択します。
- [追加] をクリックします。
- 使用できる拡張一覧から、追加する動作要素拡張を選択します。
- [追加] をクリックします。
動作の拡張位置の調整
動作は、スタックを形成する要素のコレクションです。スタックの各要素には、独自の構成があります。動作内の動作要素拡張の順序は、スタック内のそれらの位置を示します。スタック最上位の要素が最初に適用されます。順序を変更するには
- 動作ノードのいずれかを選択します。
- 編集する動作を選択します。
- [Behavior Element Extension Position] セクションで動作拡張要素を選択します。
- 一覧の左側にある [Up] ボタンまたは [Down] ボタンを使用して、選択した要素の位置を変更します。
動作要素拡張の構成の編集
- ツリー内の動作ノードの 1 つを選択します。
- 編集する要素を含む動作を選択します。
- 編集する動作要素拡張を選択します。要素の設定が、編集場所の右ペインに表示されます。
拡張
新しいバインディング拡張、バインディング要素拡張、および動作拡張を登録して、WCF 構成に使用できます。拡張は、名前と種類のペアです。名前は構成の拡張の名前を定義し、種類は拡張を実装します。拡張は 次の 3 種類あります。
- バインディング拡張は、バインディングの種類全体を定義します。例 : basicHttpBinding。
- バインディング要素拡張は、バインディングの要素を定義します。例 : textMessageEncoding。
- 動作要素拡張は、動作の要素を定義します。例 : clientVia。
構成に登録されている拡張は、同じ種類の他のすべての WCF コンポーネントと同じように使用できます。
新しい機能の追加
詳細設定ノード内の拡張ノードの 1 つを選択します。
- [新規作成] をクリックします。
- 名前と種類を入力します。
- [OK] をクリックします。
- 拡張は、エディタの適切な場所に表示されるようになります。たとえば、動作要素拡張を追加すると、使用できる拡張一覧に表示されます。
診断
[診断] ノードは、構成ファイルのすべての診断設定を表示します。診断を使用すると、パフォーマンス カウンタのオンまたはオフ、Windows Management Instrumentation (WMI) の有効または無効、WCF トレースの構成、および WCF メッセージ ログの構成を行うことができます。[診断] ノードの設定は、<system.diagnostics> セクションと構成ファイルの <system.serviceModel> の <diagnostics> セクションに対応します。
[診断] ノードをクリックして、[詳細ペイン] の診断の概要ページでタスクを表示または実行できます。
パフォーマンス カウンタと WMI の構成
- [診断] ノードをクリックします。
- [パフォーマンス カウンタの切り替え] をクリックします。パフォーマンス カウンタには、Off (既定)、ServiceOnly、All の 3 つの状態があります。リンクをクリックすると、これらの 3 つの状態の間で設定が切り替わります。
WMI プロバイダの構成
- [診断] ノードをクリックします。
- WMI プロバイダを有効にするには、[WMI プロバイダの有効化] リンクをクリックします。
WCF トレースの有効化
標準プロパティを持つ WCF トレース ファイルを作成したり、カスタム トレース ファイルを設定したりできます。
- [診断] ノードをクリックします。
- [トレースの有効化] をクリックします。
- トレース レベルを調整するには、[トレース レベル] リンクをクリックします。トレース レベルは、Off、Critical、Error、Warning、Information、Verbose の 6 つあります。[アクティビティのトレース] と [アクティビティの伝達] オプションを使用すると、WCF アクティビティ トレース機能を使用できます。
- トレース ファイルとオプションを指定するには、トレース リスナ名をクリックします。
WCF ログの有効化
標準プロパティを持つ WCF トレース ファイルの作成またはカスタム トレース ファイルを作成できます。
- [診断] ノードをクリックします。
- [メッセージ ログの有効化] をクリックします。
- ログ レベルを調整するには、[ログ レベル] リンクをクリックします。ログ レベルは、間違った形式のメッセージ、サービス メッセージ、トランスポート メッセージの 3 つあります。
- ログ ファイルとオプションを指定するには、リスナ名をクリックします。
メモ : |
---|
アプリケーションを閉じるときにトレース ログとメッセージ ログを自動的にフラッシュする場合は、[Auto Flush] オプションを有効にします。 |
[診断] の概要ページを使用すると、診断の構成で最も一般的なタスクを実行できます。ただし、リスナとソースの設定を手動で編集する場合は、[診断] ノードを展開して、[メッセージ ログ]、[リスナ]、および [ソース] ノードの設定を編集する必要があります。
WCF カスタム トレースまたはメッセージ ログの有効化
- [診断] ノードをクリックして展開します。
- [リスナ] ノードを右クリックし、[新しいリスナ] を選択します。
- [InitData] フィールドにトレース ファイル名を入力します。[…] ボタンをクリックすると、パスを参照できます。
- [TypeName] ラインをクリックすると、[…] ボタンが表示されます。このボタンをクリックすると、[トレース リスナ型ブラウザ] が開きます。これを使用すると、既にインストールされている事前構成のトレース リスナを見つけることができます。
- [ソース] セクションに注意してください。このセクションで [追加] をクリックすると、ダイアログ ボックスが開き、使用できるトレース ソースの一覧がドロップダウン メニューに表示されます。トレース ソースを選択して、[OK] をクリックします。
- メッセージ ログ設定を編集するには、[メッセージ ログ] ノードをクリックします。プロパティ グリッドで設定を編集できます。
ウィザードによる構成ファイルの作成
新しい構成ファイルを作成する 1 つの方法として、新しいサービス要素ウィザードを使用します。ウィザードは、インストールされたサービスの種類および WCF と互換性のある、COM+、Web ホストの仮想ディレクトリなどの他の要素をコンピュータ上で見つけると、それらを読み込んで、構成の作成を効率よく行います。
構成ファイルの作成
- サービス構成エディタを起動するには、コマンド ウィンドウで WCF のインストール場所に移動し、「SvcConfigEditor.exe」と入力します。
- [ファイル] メニューの [開く] を選択し、作成する構成ファイルの種類に応じて [実行可能]、[COM+ サービス]、または [Web ホスト サービス] をクリックします。
- [開く] ダイアログ ボックスで、構成ファイルを作成する特定のファイルに移動し、ダブルクリックします。
- [ファイル] メニューの [新しい項目の追加] をポイントし、[サービス] をクリックします。新しいサービス要素ウィザードが開きます。
- ウィザードの指示に従って新しいサービスを作成します。
メモ : |
---|
ウィザードによって生成される構成ファイルから NetPeerTcpBinding を使用する場合は、手動でバインディング構成要素を追加し、その security 要素の mode 属性を "None" に変更する必要があります。 |
COM+ の構成
サービス構成エディタによって、既存の COM+ アプリケーションに新しい構成ファイルを作成したり、既存の COM+ 構成を編集することができます。構成ファイルに <comContract> セクションが存在する場合は、[COM コントラクト] ノードだけが表示されます。
新しい COM+ 構成の作成
新しい COM+ 構成を作成する前に、COM+ アプリケーションがコンポーネント サービスにインストールされて、グローバル アセンブリ キャッシュ (GAC) に登録されていることを確認します。
- [ファイル] メニューの [統合] をポイントし、[COM+ アプリケーション] を選択します。この操作は、現在開いているファイルを閉じます。現在のファイルに保存されていないデータがあれば、[保存] ダイアログ ボックスが表示されます。COM+ 統合ウィザードが起動されます。
- 最初のページで、ツリーから COM+ アプリケーションを選択します。ツリーで COM+ アプリケーションが見つからない場合は、COM+ アプリケーションがコンポーネント サービスにインストールされて、グローバル アセンブリ キャッシュ (GAC) に登録されていることを確認します。
- 次のページで、WCF サービスとして公開するメソッドを選択します。既定では、COM+ アプリケーションでサポートされるすべてのメソッドが表示され、選択されます。
- ホスト メソッドを選択します。
- ウィザードのガイドに従って他の設定を構成します。
- サービス構成エディタは、バックグラウンドで ComSvcConfig.exe を利用して、構成ファイルを生成します。これが完了すると、概要を表示してウィザードを終了できます。生成された構成ファイルを開いて直接編集できます。
既存の COM+ 構成の編集
- [ファイル] メニューの [開く] をポイントし、[COM+ サービス] を選択します。
- 編集する COM+ サービスを一覧から選択します。
- [COM コントラクト] ノードで構成設定を編集します。
メモ : COM コントラクトを含む構成ファイルを直接開いて編集することもできます。
セキュリティ
構成エディタによって生成されるサービス構成ファイルは、セキュリティによる保護が保証されていません。WCF サービスをセキュリティで保護する方法については、「Windows Communication Foundation Security」を参照してください。
また、構成エディタを使用して読み書きできるのは、有効な WCF 構成要素だけです。ツールは、スキーマに準拠するユーザー定義の要素を無視します。また、これらの要素を構成ファイルから削除したり、既知の WCF 要素に対する影響を究明することはありません。これらの要素がアプリケーションやシステムに脅威を与えるかどうかを究明するのはユーザーの責任です。