2010-11-23 15 views
1

これはStackOverflowのホットな話題ですが、私には負担があります。Silverlight、WCF、NotFound、oh my

Silverlight 3アプリケーションがWCFサービスと通信しています。 WCFサービスを呼び出すたびに、NotFound例外が返されます。

私はこの件に関してはSOとGoogleのすべての投稿を読んだことがありますが、何がうまくいかないのか分かりません。私の知見の一部は次のとおりです。

  • 例外はランダムな呼び出しとランダムな瞬間に発生します。時にはメソッドが50回動作し、うまくいけばバグが出ます。コールを呼び出す前にアプリケーションをアイドル状態にしておくと、再生が最も簡単になるため、タイムアウトに関連していると感じていますが、常にそうであるとは限りません。アプリケーションの最初の呼び出しの1つが失敗することがあります。
  • 私たちはSilverlightFaultBehaviorを使用してHTTPエラーコードを200に変換しています。サーバー側で例外をスローすると実際にクライアント側にバブルが発生するため、期待通りに動作するはずです。
  • 例外が発生した時点で、Fiddlerは何も特別なことを示していません。私は問題の呼び出しを見ていない。これは私の心配ですが、例外は数分前に起こったコールの結果であり、タイムアウトしたことを意味する可能性があります。
  • サービストレースビューアには何も表示されません。
  • 私はVisual StudioをSilverlightプロジェクトとWCFサービスプロジェクトにアタッチし、すべての例外(破棄または処理)で中断するようにデバッグを設定し、破損しません(Silverlight以外でNotFound問題について教えてください)。これは、NotFoundがWCFサービス側の例外に対する応答ではないかもしれないと私に考えさせます。

ここからどこに行くのか分かりません。どんな助けでも、試してみるべきことの指針やアイデアは大歓迎です。ここで

+0

こんにちは、私はそれが古い投稿だと知っていますが、私は同じ問題を抱えています。この問題を解決しましたか? – Luis

答えて

1

はあなたが言及したポイントのためにいくつかの考えです:

1)例外がランダム通話にランダムな瞬間に起こる - メソッドの戻り値が有効であるように、データが送信されていることを確認してください。私はいくつかの空のプロパティを持つオブジェクトを送信するとシリアル化に失敗した場合がありました。私はこれをIISログ/サービストレースログを使って見つけました。

2)だから、有用なものは見つかりましたか?

3)私はフィドラーがこの種のエラーを助けることができるとは思わない。

4)これは本当ですか?トレースログを正しく設定しましたか?

5)ここであなたを助けることができる例外はありません。サーバー側からメッセージ/データをラップしたり、クライアント側でメッセージ/データをアンラッピングしたりしている間は、実際の例外(「見つからない」というエラーが表示されます)が発生します。

要約すると、データが正しい形式(WCFではなく正しいと思われるかもしれませんが、別の値でしばらく再生します)を確認し、再度トレースログを確認してください。

+0

2)NotFoundがサーバー側の例外の結果であると私に伝えるのを避けるため、これを述べました。私はそれから何か役に立つものを得ていない。 3)私はWCFサービスに電話がかけられているのを見ていますか? 4)私の知る限り、はい。私はこれらのログの中で多くの活動が行われているのを見ることができます。私の問題に関連するものは何もありません。 - 私の気になるところは、データが正しい形式であることを確認するのは非常に難しいということです。なぜなら、どのコールが失敗するのかわからないからです。フィドラーは、送信されているデータを伝えるのに役立たないワイヤーを介して。 – efdee

+0

ああ、これはどこかで起こったという事実、明らかに。私または私の同僚の一部が変更を加えたと確信していますが、今のところどこでも起こっているようです。そして非常にランダムにそうです。 – efdee

+0

"とFiddlerは、どのようなデータが電信線を介して送信されているかを伝える助けにはならない" - だからこそ、このシナリオでは大きな助けにはならないと言いました。 – decyclone

1

サービスのバインディングとは何ですか?ホストされている場所:IISまたはVS展開サーバー? 私はこの問題を最近見たことがありますが、IISに何か問題がありました。 * .svcファイルを開くことさえできませんでした。だからここ は、活動の計画である:

  1. は、それが開いた場合は、コンソールアプリケーションを作成し、サービスをテストhttp://localhost/MyApp/MyService.svc
  2. ようなHTTPアドレスを使用してSVCファイルを開くようにしてください。
  3. 動作する場合は、Silverlightのシンプルなアプリケーションを作成してください。

これが役立ちます。

+0

一般的にはすべて動作します。 Silverlightアプリケーションは、100秒を成功させることができ、そのエラーメッセージでうまくいって失敗することがあります。私はVS devサーバーでテストしていますが、IISにデプロイすると問題は解消されますが、それでも開発中は迷惑になることがあります。 – efdee

0

私は、Web.configファイルに

minFreeMemoryPercentageToActivateService="1" 

を追加することによって、これを修正しました。デフォルトでは

minFreeMemoryPercentageToActivateService="5" 

ですが、このエラーが発生することがあります。

関連する問題