Веб-сервис жив вечен

Я часто использую веб-сервис таким образом

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

но иногда я делаю это

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

Второй подход мне очень нравится, но иногда он истекает, и мне приходилось запускать приложение снова, первый, я думаю, приносит накладные расходы и не очень эффективен, на самом деле, иногда первый вызов возвращает WebException - ConnectFailure (I не знаю почему).

Я нашел статью ( Горе веб-службы (свет в конце туннеля?) ), В которой превышено время, в течение которого для свойства KeepAlive было установлено значение false в переопределенной функции GetWebRequest. Вот код:

Protected Overrides Function GetWebRequest(ByVal uri As System.Uri) As System.Net.WebRequest

  Dim webRequest As Net.HttpWebRequest = CType(MyBase.GetWebRequest(uri), Net.HttpWebRequest)

  webRequest.KeepAlive = False

  Return webRequest

End Function

Вопрос в том, возможно ли продлить время ожидания веб-сервиса и, наконец, как вы реализуете свои веб-сервисы для решения этой проблемы?

20.08.2008 20:07:34
1 ОТВЕТ
РЕШЕНИЕ

Классы, сгенерированные Visual Studio для веб-сервисов, являются просто прокси с небольшим состоянием, поэтому их создание довольно дешево. Я не стал бы беспокоиться о потреблении памяти для них.

Если то, что вы ищете, это способ вызова веб-метода в одну строку, вы можете просто сделать это:

new mywebservice().call()

ура

1
20.08.2008 20:32:34