Windows Communication Foundation サンプルのビルド
Windows Communication Foundation (WCF) のサンプルは、Visual Studio IDE を使用するか、コマンド ラインから msbuild コマンドを使用してビルドできます。 この記事では、両方の手順について説明します。
Note
WCF サンプルをビルドまたは実行する前に、Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行していることを確認してください。
コマンド プロンプトを使用してサンプルをビルドするには
Visual Studio の開発者コマンド プロンプトを開き、サンプルをインストールしたディレクトリの場所にある言語固有のサブディレクトリに移動します。
コマンド ラインで「
msbuild
」と入力します。 クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。 サービスがインターネット インフォメーション サービス (IIS) によってホストされている場合は、サービス プログラム ファイルがさらに servicemodelsamples ディレクトリと、その \bin サブディレクトリにコピーされます。
Note
%systemdrive%\inetpub\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。 このように設定しない場合、ビルド後のイベントが失敗する場合があります。 代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトを管理者として実行することもできます。
Visual Studio を使用してサンプルをビルドするには
Visual Studio の [ファイル] メニューで、[開く]>[プロジェクト/ソリューション] の順に選択します。 サンプルをインストールしたディレクトリの下にある言語固有のサブディレクトリに移動し、.sln ファイルのアイコンをダブルクリックして、Visual Studio でソリューションを開きます。
[ビルド] メニューの [ソリューションのリビルド] を選択します。
クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。 サービスが IIS でホストされている場合は、サービス プログラム ファイルが servicemodelsamples ディレクトリとその \bin サブディレクトリにもコピーされます。
Note
%systemdrive%\inetpub\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。 このように設定しない場合、ビルド後のイベントが失敗する場合があります。 代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトまたは Visual Studio を管理者として実行することもできます。 一部の Visual Studio アクション (ASP.NET ワーカー プロセスへのデバッガーのアタッチなど) にも管理者特権が必要です。
セットアップ バッチ ファイルとスクリプト
Setup.exe および Cleanup.exe のバッチ ファイルとスクリプトは、Visual Studio の開発者コマンド プロンプトから実行する必要があります。 いくつかのセットアップ ファイルとクリーンアップ ファイルは、管理特権が必要なタスクを実行します。したがって、これらのファイルは管理特権で起動する必要があります。
メタデータ エンドポイントに関する重要なセキュリティ情報
機密性の高いサービス メタデータが誤って公開されるのを防ぐために、Windows Communication Foundation (WCF) サービスの既定の構成では、メタデータの公開は無効になっています。 この動作は、既定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ発行の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール (Svcutil.exe など) を使用して生成できないことも意味します。 サンプルでの試みを容易にするため、ほとんどすべてのサンプルでは、セキュリティ保護されていないメタデータ公開エンドポイントを公開しています。 このようなエンドポイントを利用するコンシューマーは、匿名で、認証を受けていない可能性もあります。したがって、エンドポイントを配置する前には注意を払い、サービスのメタデータをパブリックに開示することが適切であることを確認する必要があります。 サービス メタデータの発行の詳細については、「メタデータ公開動作」のサンプルを参照してください。 メタデータ エンドポイントをセキュリティで保護するサンプルについては、「カスタム セキュア メタデータ エンドポイント」のサンプルを参照してください。
例外処理
通常、コードではサンプルの主題を重視するので、これらのサンプルに例外処理は含まれていません。 例外処理の詳細については、「予期される例外」のサンプルを参照してください。
Svcutil を使用したクライアントと構成の再生成
ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe) を使用して、ほとんどのサンプルのクライアント コードと構成を再生成できます。 一部のサンプルでは、構成を手動で編集する必要があります。 たとえば、Svcutil.exe を使用して、クライアント証明書の資格情報を使用するサンプルの構成を再生成する場合は、以前に構成された資格情報を手動で指定する必要があります。 一部のサンプルでは、生成コードに影響を与える、Svcutil.exe の特定のオプションを使用します。これらのオプションは、そうした特定のサンプルのトピックで指定されます。
クライアントと構成ファイルを再生成するには
SDK コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。
サービスが Web ホスト型の場合は、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
サービスが自己ホスト型の場合は、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /out:generatedClient.cs
http://localhost:8000/ServiceModelSamples/service.svc/mex
を自己ホスト型サービスの mex エンドポイントのアドレスに置き換えます。Visual Basic の型でクライアントを生成するには、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
サービスが自己ホスト型の場合は、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
Note
クライアント構成の生成をスキップするには、 /noConfig オプションを追加します。