HttpWebRequest クラスを使用するときに接続の問題 (接続が遅い、応答が完了しない、接続が切断されるなど) をプログラムでシミュレートする方法はありますか?
ありがとう
編集:さらに詳しく説明するには、デバッグのためにこれが必要ですが、最終的にはテストに変えたいと思います。非同期メソッドの BeginGetRequestStream、EndGetRequestStream、BeginGetResponse、および EndGetResponse を使用しています。私はそれらをすべて適切にラップしました (願っています) 発生した例外をログに記録する Try Catch ブロック。
これがいくつかのケースで機能することはわかっています (たとえば、ネットワーク ケーブルを抜いたときなど)。しかし、まれに (つまり、要求している Web サイトが遅い場合のみ)、システムがクラッシュし、イベント ログに記録されます。
Exception: System.Net.WebException
Message: The request was aborted: The connection was closed unexpectedly.
StackTrace: at System.Net.ConnectStream.BeginRead(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Object state)
at System.IO.Compression.DeflateStream.ReadCallback(IAsyncResult baseStreamResult)
at System.Net.LazyAsyncResult.Complete(IntPtr userToken)
at System.Net.ContextAwareResult.CompleteCallback(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Net.ContextAwareResult.Complete(IntPtr userToken)
at System.Net.LazyAsyncResult.ProtectedInvokeCallback(Object result, IntPtr userToken)
at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)
HttpWebRequest からのものであると仮定していますが、すべてのコードが Try Catch ブロックでラップされています。
そのような場合、モックは役に立ちますか?