2016-05-20 14 views
0

私は、サービスリファレンスを介してWCFサービスを使用するアプリケーションを持っています。私たちはいくつかの失敗テストをしています。サービス自体が失敗しているとモデル化できるようにしたいと考えていますが、この場合はサービスを停止できません。さらに、アプリケーションが実行されている間に接続が復元された後で機能に戻る必要があります。WCFサービスクライアントがホストファイルとファイアウォールの変更を無視する

私はこれにファイアウォールルールを使用しようとしましたが、何らかの理由でそれが最初に正常に接続された場合は、後で正常に接続を続けます。これは、最初の1つの接続を作成してから、後でその接続を維持するためです。

ホストファイルを変更できると思ったのですが、同じ問題が発生しました。それはちょうど良い接続、私はホストを変更し(そして、それがpingのようなものをリダイレクトすることを確認する)、アプリケーションは正常に接続し続けます。

私は、ipconfig/flushdnsのような多くのことを試しました。私にできることはほかにありますか?私は一時的にアウトバウンド接続を中断させ、再接続を強制するスクリプトを作成することを検討しました。問題は、私がマシンにRDPingしていると、これは私自身の接続を破壊する可能性があるということです!それは望ましくない。

RDPを中断することなく、サービスクライアントがHostsファイルの変更を尊重したり、ファイアウォールの変更を尊重したり、簡単かつ一時的にアウトバウンド接続を中断させる方法はありますか?

編集:メモとして、接続はKeep Aliveを使用しており、これは変更できないものです。さらに、app.configを使用していないため、変更することもできません。最後に、マシンに追加のソフトウェアをインストールすることはできません。これを行うには、すべてがOSの内部でなければなりません。

+0

クライアントと同じホスト上のHyper-V VMでサービスのテストインスタンスをスピンアップできるかどうかを確認します。その場合は、仮想スイッチで接続障害をシミュレートすることができます。 – lesscode

+0

残念ながら、クライアントマシンでは仮想化が利用できないので、私は残念です。 –

+0

Nirsoftの[CurrPorts](http://www.nirsoft.net/utils/cports.html)が役立つようです。これは現在開いている接続をリストし、管理者権限で実行すると個々の接続を強制終了させます。 – WarrenG

答えて

0

1)Fiddlerを使用して、クライアント側の接続を代行受信できます。クライアントを実行するアカウントでFiddlerを実行する必要があることに注意してください。おそらくそれはあなたが行かなければならない方法です。

2)または、現在の方法を修正することができます。説明したように、「キープアライブ」を無効にすることができます。 hereの指示を参照してください。

IISマネージャを開き、管理するレベルに移動します。 の[機能の表示]で、[HTTP応答ヘッダー]をダブルクリックします。 HTTP [応答ヘッダー]ページの[操作]ウィンドウで、[共通ヘッダーの設定]をクリックします。 [共通HTTP応答ヘッダーの設定]ダイアログボックスで、[ HTTPキープアライブを無効にする]チェックボックスをオンにして、[OK]をクリックします。注:これにより、 仮想ディレクトリの1つだけでなく、IISの下のすべてのプロセスのHTTPキープアライブが無効になります。

よろしく、

M.R.ASHWINPRABHU

しかし、それだけでフィドラーを使用するよりも、ファイアウォールのルールで動作するように以下の便利な方法のようです。

+0

オプション1は間違いなく可能です。上記のコメントの他の人は、同様の機能を備えた他のツールをいくつか提案しました。残念ながら、このインスタンスではターゲットマシンに追加のソフトウェアをインストールすることはできませんので、内部のWindowsツール(または実行可能なバッチ/ PowerShellスクリプト/コマンド)が必要になります。さらに、オプション2は、a)サービスを所有していないため、b)クライアントの効率性のためにキープアライブ機能が必要なために機能しません。そのため、アプリケーションで手動でキープアライブをオフにすることは不可能です。 –

0

& run TCPViewをSysinternalsからダウンロードしてください。インストールする必要はありません。 プロセス一覧が表示されます。プロセスYourAppName.exeを右クリックしてRemote Address = YourServerNameOrIPをクリックし、をクリックしてください。接続はです。あなたは他のインスピレーションを見つけるかもしれませんin answers to this question

あなたはその間にそれを行う必要がありますWCF通信がアクティブになっている、あなたは、この例外を受け取る必要があります。

ソケット接続が中断されました。これは、 メッセージの処理中にエラーが発生したか、リモートホストの または受信したネットワークリソースの問題により受信タイムアウトを超過したことが原因です。ローカルソケット タイムアウトは '{0}'でした。

ファイアウォールルールを使用してTCPViewブロッキングで接続を閉じた後、新しい接続に使用する必要があります。

スクリプトが必要な場合は、this answerをチェックしてください。

+0

Keep Aliveとの接続を開始してプログラムを開いたままにして、ファイアウォールルールを変更していますか?問題は、ファイアウォールルールの設定が何もしないという接続が確立された後です。プロセスは次のようになります。接続を開き、ファイアウォールを設定します。これは動作しません。あなたがした場合:ファイアウォールを設定し、次に接続を開くと、あなたが言ったように動作します。 –

+0

申し訳ありませんが、私はKeepAliveを使用しませんでした。 –

関連する問題