チュートリアル入門のトラブルシューティング
このトピックでは、チュートリアル入門の作業中に遭遇する最も一般的な問題とその解決方法の一覧を示します。
ハード ドライブ上のプロジェクト ファイルが見つからない。
サービス アプリケーションを実行しようとすると次のエラーが発生する: HTTP が URL http://+:8000/ServiceModelSamples/Service/ を登録できませんでした。プロセスにこの名前空間へのアクセス権がありません。
Svcutil.exe ツールを使用しようとすると次のエラーが発生する: 'svcutil' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
Svcutil.exe によって生成された App.config ファイルが見つからない。
クライアント アプリケーションのコンパイル中に次の構文エラーが発生する: 'CalculatorClient' に '<メソッド名>' の定義が含まれておらず、型 'CalculatorClient' の最初の引数を受け付ける拡張メソッド '<メソッド名>' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
クライアント アプリケーションのコンパイル中に次のエラーが発生する: 型または名前空間名 'CalculatorClient' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
未処理の例外 : System.ServiceModel.EndpointNotFoundException: https://localhost:8000/ServiceModelSamples/Service/CalculatorService に接続できませんでした。TCP エラー コード 10061: 対象のコンピューターによって拒否されたため、接続できませんでした。
ハード ドライブ上のプロジェクト ファイルが見つからない。
Visual Studio ではプロジェクト ファイルを Windows Vista および Windows°7 の c:\users\<ユーザー名>\Documents\Visual Studio 2010\Projects に保存し、以前のバージョンの Windows では c:\Documents and Settings\<ユーザー名>\My Documents\Visual Studio 2010\Projects に保存します。
サービス アプリケーションを実行しようとすると次のエラーが発生する: HTTP が URL http://+:8000/ServiceModelSamples/Service/ を登録できませんでした。プロセスにこの名前空間へのアクセス権がありません。
WCF サービスをホストするプロセスは、管理者特権で実行する必要があります。サービスを Visual Studio 2010 の内部から実行する場合は、管理者として Visual Studio 2010 を実行する必要があります。これを行うには、[スタート] ボタンをクリックし、[Visual Studio 2010] を右クリックし、[管理者として実行] をクリックします。サービスをコマンド ライン プロンプトから実行する場合は、同様の方法で管理者としてコマンド ライン プロンプトを開始する必要があります。[スタート] ボタンをクリックし、[コマンド プロンプト] を右クリックし、[管理者として実行] をクリックします。
Svcutil.exe ツールを使用しようとすると次のエラーが発生する: 'svcutil' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
Svcutil.exe がシステム パスに存在する必要があります。最も簡単な解決方法は、コマンド プロンプトを使用する方法です。[スタート] ボタンをクリックして [すべてのプログラム] をポイントし、[Visual Studio 2010]、[Visual Studio Tools]、[Visual Studio 2010 コマンド プロンプト] の順にクリックします。このコマンド プロンプトにより、Visual Studio 2010 の一部として提供されているすべてのツールの正しい場所のシステム パスが設定されます。
Svcutil.exe によって生成された App.config ファイルが見つからない。
[既存項目の追加] ダイアログ ボックスには、既定では .cs、.resx、.settings、.xsd、.wsdl の拡張子を持つファイルのみが表示されます。[既存項目の追加] ダイアログ ボックスの右下にあるドロップダウン リスト ボックスで [すべてのファイル (*.*)] をクリックすると、すべてのファイルの種類が表示されるように指定できます。
クライアント アプリケーションのコンパイル中に次の構文エラーが発生する: 'CalculatorClient' に '<メソッド名>' の定義が含まれておらず、型 'CalculatorClient' の最初の引数を受け付ける拡張メソッド '<メソッド名>' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
外部に公開されるのは、ServiceOperationAttribute でマークされたメソッドのみです。ICalculator インターフェイスのメソッドのいずれかで ServiceOperationAttribute 属性を省略した場合、その属性が欠けている操作を呼び出すクライアント アプリケーションをコンパイルしたときにこのエラー メッセージが表示されます。
クライアント アプリケーションのコンパイル中に次のエラーが発生する: 型または名前空間名 'CalculatorClient' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。
Proxy.cs または Proxy.vb ファイルをクライアント プロジェクトに追加しなかった場合にこのエラーが発生します。
クライアントを実行すると次のエラーが発生する: 未処理の例外 : System.ServiceModel.EndpointNotFoundException: https://localhost:8000/ServiceModelSamples/Service/CalculatorService に接続できませんでした。TCP エラー コード 10061: 対象のコンピューターによって拒否されたため、接続できませんでした。
サービスを実行せずにクライアント アプリケーションを実行した場合にこのエラーが発生します。
未処理の例外: System.ServiceModel.Security.SecurityNegotiationException: ターゲット 'https://localhost:8000/ServiceModelSamples/Service/CalculatorService' への 'https://localhost:8000/ServiceModelSamples/Service/CalculatorService' との SOAP セキュリティ ネゴシエーションが失敗しました。
ドメインに参加しているコンピューターにネットワーク接続がない場合にこのエラーが発生します。コンピューターをネットワークに接続するか、クライアントとサービスの両方のセキュリティをオフにします。サービスの場合は、WSHttpBinding を作成するコードを次のように変更します。
// Step 3 of the hosting procedure: Add a service endpoint
selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");
クライアントの場合、<binding> 要素の下にある <security> 要素を次のように変更します。
<security mode="Node" />
参照
概念
WCF トラブルシューティング クイックスタート
セットアップ問題のトラブルシューティング