2014-02-12 47 views
1

我做以下,检查,如果网络服务已经启动并运行 - 高效

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分钟)才能得到响应。

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

+0

或请参阅['HttpWebRequest.Timeout 'property](http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout(v = vs.110).aspx)。 – CodeCaster

回答

0

您的要求超时房产不会让故障响应在短时间内交付。回到this link,这里超时的情况很好,也请访问答案中提供的链接。您应该考虑使用异步调用Web服务(查找异步调用Web服务here)。

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 
    } 
} 
+0

:谢谢你的答复。但是如果服务正在运行并假设@10秒响应 – user3085995

+0

如果你“期待”10秒的回报,那没问题,那么使用11秒的超时时间。但是,如果您想要计算需要多长时间才能返回,请使用长时间超时(60秒),然后使用类似“秒表”的方法计算返回所需时间。 –

+0

我目前的状况是,我的服务没有正常运行,并且仍然以@ 1分钟的时间来获得响应。我可以在这种情况下获得即时响应(如果服务未运行)。 – user3085995

相关问题