2014-02-12 2 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 'свойство] (http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.timeout (v = vs.110) .aspx). – CodeCaster

ответ

0

Свойство тайм-аута вашего запроса не позволяет ответу на неисправность в течение короткого времени. Reffer to this link, здесь сценарий тайм-аута очень хорошо оспаривается и на ссылку, указанную в ответе. Вы должны рассмотреть возможность использования асинхронных вызовов для веб-службы (смотрите Асинхронные вызовы на веб-службу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

Смежные вопросы