Вопрос

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

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

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

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

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

Я нашел статью (Проблемы с веб-сервисом (Свет в конце туннеля?)), превышающий время ожидания, по истечении которого свойство 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

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

Это было полезно?

Решение

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

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

new mywebservice().call()

Ваше здоровье

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top