gpt4 book ai didi

.net - 为什么我的WCF服务返回10次调用后超时的FaultException?

转载 作者:行者123 更新时间:2023-12-04 07:30:22 25 4
gpt4 key购买 nike

我有一个WCF服务,有时必须返回一个Fault。由于某些原因,对我的服务的调用开始超时,并出现以下错误:
“请求 channel 在00:00:59.8906201之后等待答复时超时。增加传递给Request调用的超时值或增加Binding上的SendTimeout值。分配给此操作的时间可能是超时时间更长。”

在检查了问题之后,出现了一种模式:服务已返回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();
}
}
}

仅当服务返回FaultException时,才会发生这种情况。如果我抛出正常异常,则该服务可以在第10次调用后继续运行。显然,我想很好地包装我的异常,因此抛出普通异常不是一个真正的选择。

为什么我会遇到这些超时异常?在此先感谢您的帮助。

最佳答案

我没有足够的意见要发表,所以有新的回应...

自助服务最多允许10个并发连接-无论传输方式如何。如果您在IIS/WAS中运行WCF服务,则不必担心这一点(除非您使用的XP/Vista的最大并发连接数也是10)。

在这种情况下,故障异常和常规异常之间的差异可以说明您所看到的结果。

请记住,常规的未处理异常将使 channel 发生故障。这样做时,我认为这会打开可用的连接。当您返回故障时,它不会自动对 channel 进行故障处理,因为它允许您对连接进行某些操作并最终处理故障,因为这可能是“预期的”故障,而不会发生未处理的异常。

即使返回错误,您仍然需要Abort()连接。另外,在下面有不受管理的资源,因此请确保在您的客户/代理的调用者上实现IDisposable。

关于.net - 为什么我的WCF服务返回10次调用后超时的FaultException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com