Ho un servizio WCF che a volte deve restituire un errore. Per qualche motivo, le chiamate al mio servizio iniziano a timeout con il seguente errore: "Timeout del canale di richiesta durante l'attesa di una risposta dopo 00: 00: 59.8906201. Aumentare il valore di timeout passato alla chiamata su richiesta o aumentare il valore SendTimeout valore sul Binding. Il tempo assegnato a questa operazione potrebbe essere stato una parte di un timeout più lungo. "Perché il servizio WCF restituisce un errore FaultException, timeout dopo 10 chiamate?
Dopo aver esaminato il problema, è emerso un motivo: quando il servizio ha restituito un errore 10 volte, si avvia il timeout. Così ho creato un TestService realizzato da:
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
E un 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();
}
}
}
Questo accade solo, quando il servizio sta tornando un FaultException. Se lancio una normale eccezione, il servizio è in grado di continuare a correre dopo la decima chiamata. Ovviamente, mi piacerebbe racchiudere le mie eccezioni in modo piacevole, quindi non è una vera opzione lanciare normali eccezioni.
Perché si verificano queste eccezioni di timeout? Grazie in anticipo per qualsiasi aiuto ..
[citazione necessaria] – piers7