2012-03-02 3 views
0

WCF(IIS7/TCP/WAS)アプリケーションサービスでsendTimeout、receiveTimeout、およびhttpRuntim executionTimeoutを設定しようとしました。現在の操作を中止するWCFタイムアウト?

タイムアウトは機能しますが、操作は続行されますが、操作を中止する必要があります。

この場合、デッドロックなどがあり、できるだけ早くこの問題を解決するには、長時間にわたる操作を中断できれば、その操作は他のクライアントからの呼び出しをロックしますそれは打ち切られる必要があります。

+0

例外を正しくキャッチしていますか?なぜなら、接続がタイムアウトした場合、何かが例外をスローすることになるからです。 –

+0

私はいくつかの場所で壊れようとしましたが、タイムアウトが発生したときにサービス側にスローアップされたthreadabortまたはanyother例外はありません。 – Banshee

答えて

0

「バックグラウンド」スレッドでジョブを実行するか、そのような他のメカニズムを使用して、単に「stop」フラグに基づいてネットワークコールの結果を無視します。

私は、ジョブが停止した場合、単に「完了」イベントを発生させなかったGUIDに基づいたチケットで働く小さなジョブシステムを使用しました。

実際のネットワークコールを中止すると、安全でない可能性があります。あなたはドライバ/ os /どんなコードを壊すいくつかの重要なネットワーキングコードパスの関数をkillするかもしれません。

+0

あなたに従っていない、セッションが現在ロックを待っているWebメソッドを持っていると言う。今、私はこのセッションを開始し、現在実行中のスレッドを中止する必要があります、これは可能ですか? – Banshee

+0

はい、可能ですが、あなたが望むものではありません。単にWebメソッドの結果を無視して、新しいアクションを実行し続けるだけです。 バックグラウンドスレッドでwebmethodを実行し、それを中止することができます。しかし、誰があなたがそれを打ち切ったときにWebメソッドが何をしていたのかは誰に言いますか。 – CodingBarfield

+0

彼はいつそれを打ち切るべきかを知っていますか? –

関連する問題