在检查问题后,发现了一种模式:当服务返回10次故障时,超时就会开始。因此,我创建了一个测试服务实现:
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
并且还有一个测试客户端:
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();
}
}
}
只有当服务返回FaultException时才会发生这种情况。如果我抛出普通异常,服务能够在第10次调用后继续运行。显然,我希望将我的异常包装好,因此仅仅抛出普通异常并不是一个真正的选择。
为什么会出现超时异常?提前感谢任何帮助。