检查Web服务是否已启动并正常运行 - 高效

时间:2014-02-12 11:08:12

标签: c# asp.net web-services

我正在关注,

 var request = (HttpWebRequest)WebRequest.Create(serviceUrl);
 var response = (HttpWebResponse)request.GetResponse();
 if(response.StatusCode == HttpStatusCode.OK)
 {
  //perform some operations.
 }

为了检查服务是否在我的asp.net c#4.0应用程序中启动并运行。 它给了我预期的结果,但如果服务没有运行,则需要花费太多时间(差不多1分钟)才能得到响应。

是他们检查服务是否正常运行的其他更好方法吗?

2 个答案:

答案 0 :(得分:0)

您的请求超时属性不会让故障响应在短时间内被删除。回到this link,这里的超时情景非常好,也请访问答案中提供的链接。您应该考虑使用对Web服务的异步调用(查找对Web服务的异步调用 here)。

答案 1 :(得分:0)

除了向请求对象添加超时之外,您不必做比您已经做的更多的事情。请求超时应以毫秒为单位指定,因此5000为5秒超时。

请注意,您需要捕获异常以检测超时,这是System.Net.WebException,消息为The operation has timed out,因此您的代码将类似于:

var request = (HttpWebRequest)WebRequest.Create(serviceUrl);
request.Timeout = 5000;
try
{
    var response = (HttpWebResponse)request.GetResponse();
    if (response.StatusCode == HttpStatusCode.OK)
    {
        //perform some operations.
    }
}
catch (WebException wex)
{
    if (wex.Message == "The operation has timed out")
    {
        //   do stuff
    }
}