Visual Studio での Windows Communication Foundation (WCF) または WCF Data Services の参照のトラブルシューティング
適用対象: Visual Studio
この記事では、Visual Studio で Windows Communication Foundation (WCF) または WCF Data Services への参照を操作しているときに発生する可能性がある一般的な問題の解決策を示します。
サービス参照を更新または削除する場合は、「
サービス アドレスが指定されていない場合のエラー
アドレスのない [ Go ] ボタンを選択すると、"サービスのアドレスを入力してください" というエラー メッセージが表示されることがあります。この問題を解決するには、サービスのアドレスを特定して入力します。
- ソリューション内のサービスの場合は、[検出] ボタンを使用して検索して選択し、もう一度 [移動] ボタンを試すことができます。
- インターネット上のどこかでホストされているサービスの場合は、「WCF サービス参照を追加する」の手順に従って追加します。
サービスからデータを取得しているときのエラー
サービスから DataSet
または DataTable
を取得しているときに、"受信メッセージの最大サイズ クォータを超えました" という例外が発生することがあります。 サービス拒否攻撃を受ける可能性を制限するため、一部のバインドの MaxReceivedMessageSize
プロパティは既定で比較的小さい値に設定されています。 この値を大きくして、例外を回避することができます。 詳細については、MaxReceivedMessageSizeを参照してください。
このエラーを修復するには:
- ソリューション エクスプローラーで、app.config ファイルをダブルクリックしてを開きます。
MaxReceivedMessageSize
プロパティを見つけて、それをより大きい値に変更します。
ソリューションでサービスが見つからない
[サービス参照の追加] ダイアログ ボックスで [Discover] ボタンを選択すると、ソリューション内の 1 つ以上の WCF サービス ライブラリ プロジェクトがサービス一覧に表示されません。 この問題は、サービス ライブラリがソリューションに追加されていても、まだコンパイルされていない場合に発生する可能性があります。
このエラーを修復するには:
- ソリューション エクスプローラーで、WCF サービス ライブラリ プロジェクトを右クリックします。
- ビルドを選択します。
リモート デスクトップ経由でサービスにアクセスしているときのエラー
ユーザーがリモート デスクトップ接続経由で Web ホスト型 WCF サービスにアクセスし、ユーザーに管理アクセス許可がない場合は、NTLM 認証が使用されます。 ユーザーが管理アクセス許可を持っていない場合、ユーザーは次のエラー メッセージを受け取る可能性があります。"HTTP 要求はクライアント認証スキーム 'Anonymous' で承認されていません。 サーバーから受信した認証ヘッダーは 'NTLM' でした。"
このエラーを修復するには:
- Web サイト プロジェクトで、[プロパティ] ページを開きます。
- [開始オプション] タブで、[NTLM 認証] チェック ボックスをオフにします。
Note
WCF サービスだけが含まれる Web サイトについてのみ、NTLM 認証を無効にする必要があります。 WCF サービスのセキュリティは、web.config ファイルの構成によって管理されます。 これにより、NTLM 認証は不要になります。
[生成されたクラスのアクセス レベル] の設定が有効にならない
[サービス参照の構成] ダイアログ ボックスの [生成されたクラスのアクセス レベル] オプションを [内部] または [フレンド] に設定すると、機能しないことがあります。 ダイアログ ボックスではオプションが設定されているように見えますが、結果のサポート クラスは Public
のアクセス レベルで生成されます。 これは、XmlSerializer を使用してシリアル化されものなど、特定の型での既知の制限です。
サービス コードをデバッグしているときのエラー
クライアント コードから WCF サービスのコードにステップインすると、シンボルがないというエラーが表示されることがあります。 これは、ソリューションの一部であったサービスがソリューションから移動または削除されたときに発生する可能性があります。
現在のソリューションの一部である WCF サービスに参照を初めて追加すると、サービス プロジェクトとサービス クライアント プロジェクトの間に明示的なビルド依存関係が追加されます。 これにより、クライアントが常に最新のサービス バイナリにアクセスすることが保証されます。これは、クライアント コードからサービス コードへのステップインなどのデバッグ シナリオに特に重要です。
サービス プロジェクトがソリューションから削除された場合、この明示的なビルド依存関係が無効になります。 必要に応じてサービス プロジェクトがリビルドされることを、Visual Studio で保証できなくなります。
このエラーを修正するには、サービス プロジェクトを手動でリビルドします。
- [Tools](ツール) メニューの [Options](オプション) を選択します。
- [オプション] ダイアログ ボックスで、[プロジェクトとソリューション] を展開し、[全般] を選択します。
- [ビルド構成の詳細表示] チェック ボックスがオンになっていることを確認し、OKを選択します。
- WCF サービス プロジェクトを読み込みます。
- [構成マネージャー] ダイアログ ボックスで、[アクティブ ソリューション構成] を [デバッグ] に設定します。 詳細については、構成を作成および編集する」を参照してください。
- ソリューション エクスプローラーで WCF サービス プロジェクトを選択します。
- Build メニューの Rebuild を選択して WCF サービス プロジェクトをリビルドします。
WCF Data Services がブラウザーに表示されない
WCF Data Service でデータの XML 表現を表示しようとすると、Internet Explorer でデータが RSS フィードとして誤って解釈されることがあります。 RSS フィードを表示するオプションが無効になっていることを確認してください。
このエラーを解決するには、RSS フィードを無効にします。
- Internet Explorer の Tools メニューの [Internet オプション 選択。
- [ Content ] タブの [ Feeds セクションで、 Settings を選択します。
- [ フィードの設定 ] ダイアログ ボックスで、[ フィード読み取りビューに戻る ] チェック ボックスをオフにして、[ OKを選択します。
- [OK] を選択して [インターネット オプション] ダイアログ ボックスを閉じます。