我从代码中调用服务,如果服务因任何原因被停止,它会给我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分钟吗??
编辑::
在这种情况下,我知道服务被停止了。我正在通过停止服务来测试它。问题是,我们已经开发了不相关的数据,如果服务停止了,它将返回默认数据,但这需要时间,所以我正在调查是否是openTimeOut负责它。
发布于 2012-04-04 09:45:24
一个TimeSpan值,指定打开操作完成的时间间隔。该值应该大于或等于零。默认为00:01:00。
因此,我从这里了解到,已经打开的操作应该在一分钟内完成。有什么评论吗?因为我正在测试它,抛出EndPointNotFoundException只需5秒
发布于 2012-04-04 09:35:25
客户端连接失败的原因有很多,例如网络问题、服务器应用程序池被停止/锁定、服务器ThreadPool耗尽等。
这些不一定会抛出一个EndpointNotFoundException --例如,如果一个appears被停止,一个503的错误就会在客户机上显示为一个ServiceTooBusyException。在这种情况下,错误将“立即”发生,并且不会“等待”为服务在服务器上“复活”自己配置的超时时间。(即openTimeout指定允许的最长时间)
最好是捕捉其中一个基本异常,然后从那里工作,例如System.ServiceModel.CommunicationException,甚至只是一个System.Exception。
在一个不相关的点上,请注意,任意‘最大化’所有WCF配置设置是不明智的-请参阅C# WCF -客户机/服务器- System.OutOfMemory异常。
https://stackoverflow.com/questions/10007972
复制相似问题