ASP.NETページを使用してWCFサービスを変更するにはどうすればよいですか?
質問
DBからデータを取得し、オブジェクトのリストを返すWCFサービス(.NET 3.5)を作成しました。うまく機能します。 WCFTESTCLIENTアプリケーションを使用してテストし、目的の結果を得ました。
今、私はASP.NET Webアプリケーションを作成し、サービスを消費しようとしました。有効化後 <serviceDebug includeExceptionDetailInFaults="true"/>
構成ファイルでは、エラーメッセージは「オブジェクトリファレンスがオブジェクトのインスタンスに設定されていない」です。
ASP.NETで動作するようにサービスを変更するにはどうすればよいですか?
ありがとう!
更新1-サービスへの参照を作成しました。サービスのデフォルトのWebページに表示されるサンプルコードに基づいて、非常に基本的なテストアプリを実行したとき、「オブジェクトのインスタンスに設定されていないオブジェクト参照」メッセージを取得しました。
Visual Studioで提供されるWCFテストクライアントユーティリティを使用すると、サービスは正しい結果を返しています。次のコードを使用しようとすると、すべてpage_loadイベントで、オブジェクト参照メッセージが表示されます。
PhoneNumberServiceClient client = new PhoneNumberServiceClient();
// Use the 'client' variable to call operations on the service
List<PhoneNumber> phones = client.GetPhoneNumbers();
// Always close the client.
client.Close();
追加のデバッグ情報を取得しようとします。
解決
以下を初期化した後、サービスを開いてみましたか?
client.Open();
問題がまだ続く場合は、それがWCFメソッド自体にあるかもしれません。メソッドにブレークポイントを追加し、デバッグしてエラーの原因を追跡してみてください。プロファイラーを使用することもできます。
他のヒント
また、結果の例外の詳細を許可するようにサービスを構成する必要があります。 ここの情報をフォローして、それを実現してください.
ASP.NETアプリは、提供するように設定していないサービスから特定の情報をキャッチすることを期待していると思います。
私はこれをコメントとして書いたでしょうが、方法を理解できなかったので、答えを試みると思います。
ビルトインテストクライアントを使用したことに言及しましたが、クライアントアプリケーション(新しいサービスに電話したいWebサイト)を作成したときに、WCFサービスの終了と一致するようにエンドポイント(web.config)を構成しましたか?たとえば、WSHTTPBindingエンドポイントを使用してWCFサービスを呼び出すクライアントアプリ:
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://localhost:8080/ContractorService" binding="wsHttpBinding" contract="ContractorService.IContractorService"
name="ContractorService_WsHttp">
</endpoint>
</client>
</system.serviceModel>
また、あなたのサービスはリストを返しています、 デフォルトのサービスリファレンス クライアントに追加したことは、アレイで停止する可能性が非常に高いです。クライアントが今すぐ持っているサービスリファレンスを右クリックして、System.Array、Select System.collections.generic.listを選択する代わりに、コレクションタイプのドロップダウンボックスでサービスリファレンスを構成します。
構成の詳細が必要な場合は、こちらをご覧ください http://msdn.microsoft.com/en-us/library/dd936243.aspx
クライアントのPage_loadメソッドにブレークポイントを配置すると、クライアントコードを介してステップを踏むことができ、メソッドを呼び出すとWCFサービスで自動的にジャンプします。お役に立てれば