가끔 오류를 반환해야하는 WCF 서비스가 있습니다. 어떤 이유로 든 내 서비스 호출이 다음 오류로 인해 시간 초과되기 시작합니다. "00:00 : 59.8906201 이후 응답을 기다리는 동안 요청 채널 시간이 초과되었습니다. 요청에 전달 된 시간 초과 값을 요청으로 늘리거나 Binding의 SendTimeout 값이 작업에 할당 된 시간이 더 긴 시간 초과 일 수 있습니다. "WCF 서비스가 FaultException을 반환하는 이유는 무엇입니까? 10 번의 호출 후에 시간이 초과 되었습니까?
문제를 검토 한 후 다음과 같은 패턴이 나타났습니다. 서비스에서 10 회 오류를 반환하면 시간 초과가 시작됩니다.
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
그리고 TestClient을 : 서비스가 오류 예외를 반환 할 때
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();
}
}
}
이 만, 일이 그래서에 의해 구현 된 testservice를 만들었습니다. 정상적인 예외를 throw하면 10 번째 호출 후에도 서비스가 계속 실행될 수 있습니다. 분명히, 내 예외를 멋지게 포장하고 싶습니다, 그래서 그냥 정상적인 예외를 던지고 진짜 옵션이 아닙니다.
왜 이런 시간 초과 예외가 발생합니까? 어떤 도움을 주셔서 미리 감사드립니다.
[표창장 필요] – piers7