抛出 EndPointNotFoundException 所花费的时间
本文关键字:时间 EndPointNotFoundException 抛出 | 更新日期: 2023-09-27 18:30:09
我正在从代码调用服务,如果服务因任何原因停止,它会给我EndPointNotFound异常。
<binding name="NormalMode" transferMode="Buffered" receiveTimeout="24.20:31:23.6470000">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
<security mode="None" />
</binding>
我还没有设置 openTimeOut,所以它会考虑默认的 1 分钟超时。
我以这种方式调用服务,
private void MyServiceCall(Action serviceCall)
{
try
{
if (serviceCall != null)
{
serviceCall();
}
}
catch (EndpointNotFoundException endpointNotFoundException)
{
throw new EndpointNotFoundException(endpointNotFoundException.Message, endpointNotFoundException);
}
我的问题是,如果服务停止,那么抛出 EndPointNotFoundException 需要 1 分钟吗?
编辑::
在这种情况下,我知道服务已停止。我正在通过停止服务来测试它。问题是我们已经开发了断开连接的senario,如果服务停止,它将返回默认数据,但这需要时间,所以我正在调查是否是openTimeOut负责它。
客户端连接可能失败的原因有很多,例如网络问题、服务器应用程序池停止/锁定、服务器线程池耗尽等。
这些不一定会引发 EndpointNotFoundException - 例如,如果应用程序池停止,则 503 错误在客户端上显示为 ServiceTooBusyException。在这种情况下,错误将"立即"发生,并且不会"等待"服务的配置超时持续时间在服务器上"复活"自身。(即 openTimeout 指定允许的最长时间(
您可能最好捕获其中一个基本异常并从那里开始工作,例如 System.ServiceModel.CommunicationException
甚至只是一个System.Exception
.
在不相关的一点上,请注意,任意"最大化"所有 WCF 配置设置是不明智的 - 请参阅 C# WCF - 客户端/服务器 - System.OutOfMemory 异常。
一个 TimeSpan 值,它指定为打开操作完成提供的时间间隔。此值应大于或等于零。默认值为 00:01:00。
因此,我从中了解到,已经打开的操作应该在一分钟内完成。任何评论??因为我正在测试它,只需 5 秒即可抛出 EndPointNotFoundException