快速检查WCF端点是否可用(如果不可用,则如何处理)

本文关键字:何处理 处理 WCF 是否 检查 如果不 端点 | 更新日期: 2023-09-27 18:27:48

我运行了一个非常简单的WCF服务。

ASP.NET web应用程序在页面加载过程中从代码后面使用此服务,如下所示:

try
{
    using (var myWCFClient = new MyWCFClient())
    {
       int myInt = myWCFClient.GetValue();
    }
}
catch (Exception ex)
{
}

其中"MyWCFClient"是在向我的项目添加服务引用时自动生成的代理对象。

一切都很好,但问题是当服务端点由于某种原因关闭时,EndpointNotFoundException需要30多秒才能被捕获。当然,这是不可接受的,因为它会延迟页面加载,因为所有内容都是同步的。因为我没有简单的机制在页面加载后异步地将数据推送到页面,所以对WCF服务的异步调用不是首选。

我还尝试将web.config中的sentTimeout设置为5秒,但这并不能解决问题。当将InnerChannel的OperationTimeout设置为5秒时,如下所示。。。

((IContextChannel)myWCFClient.InnerChannel).OperationTimeout = TimeSpan.FromSeconds(5);

我确实得到了一个TimeOutException,但这个异常不是在5秒内抛出的,它也需要超过30秒。。。

有人知道如何处理这种情况吗?或者有没有办法在进行实际呼叫之前快速检查服务是否正在运行???

快速检查WCF端点是否可用(如果不可用,则如何处理)

我们在主机上使用一个ping函数,该函数只在响应负载中返回True,如果响应时间超过5秒,我们会抛出自己的异常并退出进程。所有的逻辑都在客户端,减去Ping()函数。我们不等待超时异常。