Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何识别web服务可用性?_C#_Web Services_Wcf_Web_Repository - Fatal编程技术网

C# 如何识别web服务可用性?

C# 如何识别web服务可用性?,c#,web-services,wcf,web,repository,C#,Web Services,Wcf,Web,Repository,我有大约500个web服务。我尝试使用Ping,但它似乎不准确。我已经测试了web客户端并下载到string。我用秒表计算了下载时间。它也不那么准确。确定web服务可用性的最佳方法是什么 Stopwatch sw = new Stopwatch(); sw.Start(); pingable = a.IsAddressAvailable(nameOrAddress); sw.Stop(); public bool IsAddressAvailable(string address) {

我有大约500个web服务。我尝试使用Ping,但它似乎不准确。我已经测试了web客户端并下载到string。我用秒表计算了下载时间。它也不那么准确。确定web服务可用性的最佳方法是什么

Stopwatch sw = new Stopwatch();
sw.Start();
pingable = a.IsAddressAvailable(nameOrAddress);
sw.Stop();

public bool IsAddressAvailable(string address)
{
    try
    {
        System.Net.WebClient client = new WebClient();
        client.DownloadData(address);
        return true;
    }
    catch
    {
        return false;
    }
}

您可以创建一个返回服务状态的端点。您可以随时调用此特定的Web服务来检查可用性。如果服务器没有对预定的重试次数进行应答,你可以考虑它。
它是一种检查服务器和服务状态的Web服务。

您需要考虑设置健康检查策略

取决于要检查的图层:

网络可用性?只要ICMP数据包在途中没有被任何防火墙拒绝,Ping就足够了。也许这不是一个真正有意义的测试

套接字/应用服务器可用性?如果应用服务器上有一个侦听器正在运行,那么简单的重复套接字连接检查(例如,请参阅)是最有效的检查方法。但在某些情况下,如果您的Web服务的http服务器已启动并正在运行,但您的Web服务背后有实例问题(例如数据库问题),则此测试是不够的


功能性可用性?最可靠也是最复杂的策略。您需要a)在Web服务的soap层上实现ping服务,或者b)调用现有的Web服务操作来检查它们的可用性。但是,在调用编写服务时必须小心。要么以幂等方式设计它们(重试/重复请求不会改变任何东西),要么为写入服务准备一些功能无害的无效请求,并针对响应在healtcheck客户端上进行断言。

如何检查500个服务的功能的可能重复?我不知道输入。