Windows Communication Foundation サンプルのビルド
Windows Communication Foundation (WCF) サンプルは、Visual Studio 2010 を使用したり、コマンド ラインで msbuild コマンドを使用したりしてビルドできます。ここでは、両方の手順について説明します。
注 : |
---|
WCF サンプルをビルドまたは実行する前に、「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」に記述されている手順が完了していることを確認してください。 |
コマンド プロンプトを使用してサンプルをビルドするには
管理者特権を使用して Visual Studio 2010 コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。
コマンド プロンプトで msbuild と入力します。クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。サービスがインターネット インフォメーション サービス (IIS) によってホストされている場合は、サービス プログラム ファイルがさらに servicemodelsamples ディレクトリと、その \bin サブディレクトリにコピーされます。
注 : |
---|
%systemdrive%\inetpub\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。このように設定しない場合、ビルド後のイベントが失敗する場合があります。代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトを管理者として実行することもできます。 |
Visual Studio を使用してサンプルをビルドするには
Windows Vista、Windows Server 2008、Windows 7、または Windows Server 2008 R2 を使用し、Visual Studio 2010 を実行する場合は、より高いレベルのアクセス許可を使用して Visual Studio を実行する必要があります。これを行うには、[スタート] メニューのアイコンを右クリックし、[管理者として実行] をクリックします。
Visual Studio で、[ファイル] メニューの [開く] をクリックし、[プロジェクト/ソリューション] をクリックします。サンプルをインストールしたディレクトリの下の言語固有のサブディレクトリに移動し、.sln ファイルのアイコンをダブルクリックして、Visual Studio でソリューションを開きます。
[ビルド] メニューの [ソリューションのリビルド] をクリックします。クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。サービスが IIS によってホストされている場合は、サービス プログラム ファイルがさらに servicemodelsamples ディレクトリと、その \bin サブディレクトリにコピーされます。
注 : |
---|
%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" https://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
サービスが自己ホスト型の場合は、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost:8000/servicemodelsamples/service.svc/mex /out:generatedClient.cs
https://localhost:8000/ServiceModelSamples/service.svc/mex を、自己ホスト型サービスの MEX エンドポイントのアドレスに置き換えます。
Visual Basic の型でクライアントを生成するには、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
サービスが自己ホスト型の場合は、次のコマンドを使用します。
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" https://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
注 : クライアント構成の生成をスキップするには、/noConfig オプションを追加します。
参照
概念
Running the Windows Communication Foundation Samples
ServiceModel メタデータ ユーティリティ ツール (Svcutil.exe)