2009-08-19 14 views
2

私はWebサービスを使用するSilverlightアプリケーションを開発しています。このWebサービスへの呼び出しは非同期に行われます。しかし、非同期呼び出しのプロシージャ中に例外が発生すると、完了したイベントでエラーが発生しますが、私は元の例外情報を失いました。元の例外とは独立して、私はいつも「リモートサーバーはエラーを返しました:NotFound」というバックを返し、スタックは「外部」コードを指しています。Silverlight 2 Webservices

アドバイスはありますか?

答えて

1

それは、Silverlightのプラグインがそれを扱うことができる前に、ブラウザによって処理されます40(x)のHTTPレスポンスに変換されます。これを避けるには、try/catchブロックでWCF呼び出しをラップし、Silverlightで処理できるHTTP応答(例:200)を使用してクライアントに例外データを返送します。http://www.codeproject.com/KB/silverlight/SilverlightExceptions.aspx

+0

別の役に立つリンク:http://msmvps.com/blogs/theproblemsolver/archive/2009/01/27/returning-exception-information-to-a-silverlight-client-through-wcf.aspx –

0

これはSLからWCFへの例外で起こります。転送されたデータでFiddler2を使用している場合や、ヒントが得られるHTTPエラーコードが表示されることがあります。これは、SL 4.0のための私の大きな要求項目、より良いWCFのデバッグです。サービスが例外をスローする場合

http://www.fiddler2.com

+0

こんにちはパリー、応答ありがとう。 はい、私はそれを最終的に考え出しましたが、SL側で元の例外をどのようにキャッチできますか? –

+0

reference.vbコードでcatchを試すことができますが、更新するたびに削除され、元の例外がないため問題を実際には解決しません。エラーメッセージを隠す必要のあるデモをやっていない限り、私はこれをしません。 – Paully

+0

あなたが正しくあなたを理解している場合、あなたのSLアプリケーションがWebサービスを使用する場合、サービス側で発生する元の例外をキャッチすることは不可能ですか?このための回避策はありますか? –

0
  1. 上記のJames Caddのアドバイスに従ってください。より有益なエラーメッセージを得ることは確かに役立ちます。残念ながら、デバッガを使用して生成することはできません。

  2. あなたが単体テストの大ファンではないとしても、これは価値あるものです。あなたのWebサービスの悪いデータを意図的に送信する一連のテストを構築し、有益なエラーが返ってくることを確認すると、Silverlightアプリケーションと連携していない理由がわかります。この種のテストを書くには、考え方が異なりますが、Webサービスを可能な限り破壊しようとしていることがわかっていれば、コードに多くの自信を持ちます。問題を追跡する