Pregunta

A menudo uso el servicio web de esta manera.

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

pero a veces hago esto

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

El segundo enfoque me gusta mucho pero a veces se agota y tuve que iniciar la aplicación nuevamente, el primero creo que trae sobrecarga y no es muy eficiente, de hecho, a veces la primera llamada devuelve una WebException - ConnectFailure (I no sé por qué).

Encontré un artículo (Problemas del servicio web (¿una luz al final del túnel?)) que excede el tiempo de espera y convierte la propiedad KeepAlive en falsa en la función anulada GetWebRequest, aquí está el código:

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

La pregunta es, ¿es posible extender para siempre el tiempo de espera del servicio web y, finalmente, cómo implementa sus servicios web para manejar este problema?

¿Fue útil?

Solución

Las clases generadas por Visual Studio para servicios web son simplemente servidores proxy con poco estado, por lo que crearlas es bastante económico.No me preocuparía por el consumo de memoria para ellos.

Si lo que buscas es una forma de llamar al método web en una línea, simplemente puedes hacer esto:

new mywebservice().call()

Salud

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top