Tôi có dịch vụ WCF đôi khi phải trả lại lỗi. Vì lý do nào đó, các cuộc gọi đến dịch vụ của tôi bắt đầu hết thời gian với lỗi sau: "Kênh yêu cầu đã hết thời gian chờ trong khi chờ trả lời sau 00: 00: 59.8906201. Tăng giá trị thời gian chờ được chuyển đến cuộc gọi đến Yêu cầu hoặc tăng Giá trị SendTimeout trên Binding. Thời gian được phân bổ cho hoạt động này có thể là một phần của thời gian chờ lâu hơn. "Tại sao dịch vụ WCF của tôi trả về FaultException, hết thời gian chờ sau 10 cuộc gọi?
Sau khi kiểm tra sự cố, một mẫu xuất hiện: Khi dịch vụ đã trả lại lỗi 10 lần, thời gian chờ bắt đầu. Vì vậy, tôi đã tạo ra một testservice thực hiện bởi:
public string GetData(int value)
{
throw new FaultException("A testerror occured");
}
Và một 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();
}
}
}
này chỉ xảy ra, khi dịch vụ được trả lại một FaultException. Nếu tôi ném một ngoại lệ thông thường, dịch vụ có thể tiếp tục chạy sau cuộc gọi thứ 10. Rõ ràng, tôi muốn bọc ngoại lệ của tôi độc đáo, vì vậy chỉ cần ném ngoại lệ bình thường không phải là một lựa chọn thực sự.
Tại sao tôi gặp phải các ngoại lệ thời gian chờ này? Cảm ơn trước vì bất kỳ trợ giúp nào ..
[cần dẫn nguồn] – piers7