2

NetTcpBindingとタイムアウトに苦労しています。これは、すべてのサービス呼び出しの周りにTry-Catch-blockを記述して解決できることを知っています。失敗した場合は、ChannelFactoryで新しいチャネルを作成し、同じ呼び出しを再度行います。唯一の問題は、私がこの醜い測定をしなければならない文字通り何百もの場所があるということです。

より良い解決策が必要だと私は知っています。残念ながら、私の場合、継承はありません。アスペクトは機能しますが、.net。では実際のサポートはありません。

タイムアウト実行がスローされた場合にチャネルが自動的に再生成され(または再接続が試行され)、同じ呼び出しが再度行われるようにWCF(チャネルモデル?)を拡張できるかどうか疑問に思いました。すべての舞台裏。

4

1 に答える 1

3

私たちのプロジェクトの 1 つで、実際の ServiceClient をラップし、チャネルへの呼び出しに try-catch を配置するプロキシを使用しました。
例外が発生し、チャネルに障害が発生すると、接続を再度開いて再度呼び出します。
3 回のタイムアウト後に同じメソッドを再度呼び出さないというしきい値を設定します。

この種のメカニズムを作成するには、DynamicProxy または Unity Interceptor を使用できます。
このリンクは役に立つかもしれませんhttp://kozmic.pl/2009/05/03/wcf-client-proxy-with-castle-dynamic-proxy/

于 2012-07-14T08:26:56.520 に答える