私は、Faultを返さなければならないWCFサービスを持っています。何らかの理由で、サービスへの呼び出しが次のエラーでタイムアウトになります。 "00:00:59.8906201の後に応答を待っている間にリクエストチャネルがタイムアウトしました。 BindingのSendTimeout値。この操作に割り当てられた時間は、より長いタイムアウトの一部であった可能性があります。WCFサービスがFaultExceptionを返すのはなぜですか?10回の呼び出し後にタイムアウトしますか?
問題を調べた後、パターンが現れました。サービスが障害を10回返すと、タイムアウトが開始されます。
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
そしてtestclient:だから私はによって実装testserviceを作成したサービスは、FaultExceptionを返すされている場合にのみ、起こる
protected void RunTestGetData()
{
using (TestServiceReference.Service1Client client
= new WSPerformanceTester.TestServiceReference.Service1Client())
{
try
{
client.GetData(1);
client.Close();
outputWriter.WriteLine(string.Format("Call run in thread {0}: GetData()", Thread.CurrentThread.ManagedThreadId));
outputWriter.Flush();
}
catch (Exception e)
{
client.Abort();
client.Close();
outputWriter.WriteLine(string.Format("Error occured in thread {0}: GetData(): {1}", Thread.CurrentThread.ManagedThreadId, e.Message));
outputWriter.Flush();
}
}
}
。通常の例外をスローすると、10回目の呼び出し後にサービスを継続できます。明らかに、私は例外をきれいに包み込みたいので、通常の例外を投げることは本当の選択肢ではありません。
なぜこれらのタイムアウト例外が発生しますか?事前に助けてくれてありがとう。
[引用が必要] – piers7