Windows Communication Foundation サンプルのビルド

Windows Communication Foundation (WCF) サンプルは、Visual Studio 2005 によって、またはコマンド ラインで MSBuild コマンドを使用することによってビルドできます。ここでは、両方の手順について説明します。

Noteメモ :

WCF サンプルをビルドまたは実行する前に、「Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」に記述されている手順が完了していることを確認してください。

コマンド プロンプトを使用してサンプルをビルドするには

  1. SDK コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。

  2. コマンド プロンプトで msbuild と入力します。クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。サービスがインターネット インフォメーション サービス (IIS) によってホストされている場合は、サービス プログラム ファイルがさらに ServiceModelSamples ディレクトリと、その \bin サブディレクトリにコピーされます。

Noteメモ :

%systemdrive%\inetpub\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。このように設定しない場合、ビルド後のイベントが失敗する場合があります。代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトを管理者として実行することもできます。

Visual Studio を使用してサンプルをビルドするには

  1. Windows Vista または Windows Server 2008 を使用し、Visual Studio 2005 を実行する場合は、より高いレベルのアクセス許可を使用して Visual Studio を実行する必要があります。これを行うには、[スタート] メニューのアイコンを右クリックし、[管理者として実行] をクリックします。

  2. Visual Studio で、[ファイル] メニューの [開く] をクリックし、[プロジェクト/ソリューション] をクリックします。サンプルをインストールしたディレクトリの下の言語固有のサブディレクトリに移動し、.sln ファイルのアイコンをダブルクリックして、Visual Studio でソリューションを開きます。

  3. [ビルド] メニューの [ソリューションのリビルド] をクリックします。クライアント プログラムが client\bin にビルドされ、サービス プログラムが service\bin にビルドされます。サービスが IIS によってホストされている場合は、サービス プログラム ファイルがさらに ServiceModelSamples ディレクトリと、その \bin サブディレクトリにコピーされます。

Noteメモ :

%systemdrive%\inetpub\wwwroot 上の ACL を、実行中のアカウントに変更権限を付与するように設定する必要があります。このように設定しない場合、ビルド後のイベントが失敗する場合があります。代わりに、ACL の設定はそのままにして、SDK コマンド プロンプトまたは Visual Studio を管理者として実行することもできます。Visual Studio の一部のアクション (デバッガを ASP.Net ワーカー プロセスにアタッチするアクションなど) では、さらに管理者特権が必要です。

セットアップ バッチ ファイルとスクリプト

Setup.exe バッチ ファイル、Cleanup.exe バッチ ファイル、およびスクリプトは、SDK コマンド プロンプトから実行する必要があります。いくつかのセットアップ ファイルとクリーンアップ ファイルは、管理者特権が必要なタスクを実行します。したがって、これらのファイルは管理者特権で起動する必要があります。

メタデータ エンドポイントに関する重要なセキュリティ情報

潜在的に機密性のあるサービス メタデータの意図しない漏洩を回避するため、Windows Communication Foundation (WCF) サービスの既定の構成では、メタデータの公開は無効になっています。この動作は、既定の設定ではセキュリティで保護されますが、同時に、サービスの構成の中でメタデータ公開の動作が明示的に有効化されない限り、サービスの呼び出しに必要なクライアント コードをメタデータ インポート ツール (Svcutil.exe など) を使用して生成できないことも意味します。サンプルでの試みを容易にするため、ほとんどすべてのサンプルでは、セキュリティ保護されていないメタデータ公開エンドポイントを公開しています。このようなエンドポイントを利用するコンシューマは、匿名で、認証を受けていない可能性もあります。したがって、エンドポイントを配置する前には注意を払い、サービスのメタデータをパブリックに開示することが適切であることを確認する必要があります。サービス メタデータの公開の詳細については、「メタデータ公開動作」のサンプルを参照してください。メタデータ エンドポイントをセキュリティ保護するサンプルについては、「カスタム セキュア メタデータ エンドポイント」のサンプルを参照してください。

例外処理

通常、サンプルの主題に的を絞ったコードにするため、これらのサンプルに例外処理は含まれていません。例外処理の詳細については、「予期される例外」サンプルを参照してください。

Svcutil を使用したクライアントと構成の再生成

ServiceModel Metadata Utility Tool (Svcutil.exe) を使用すると、ほとんどのサンプルのクライアント コードと構成を生成できます。一部のサンプルでは、構成を手動で編集する必要があります。たとえば、Svcutil.exe を使用して、クライアント証明書の資格情報を使用するサンプルの構成を再生成する場合は、以前に構成された資格情報を手動で指定する必要があります。一部のサンプルでは、生成コードに影響を与える、Svcutil.exe の特定のオプションを使用します。これらのオプションは、そうした特定のサンプルのトピックで指定されます。

クライアントと構成ファイルを再生成するには

  1. SDK コマンド プロンプトを開き、サンプルのインストール ディレクトリに存在する言語固有のサブディレクトリに移動します。

  2. サービスが 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
    
    Noteメモ :

    クライアント構成の生成をスキップするには、/noConfig オプションを追加します。

関連項目

概念

Windows Communication Foundation サンプルの実行

その他の技術情報

ServiceModel Metadata Utility Tool (Svcutil.exe)

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.