Frage

Ich verwende den Webservice oft auf diese Weise

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

aber manchmal mache ich das

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

Der zweite Ansatz gefällt mir sehr gut, aber manchmal kommt es zu einer Zeitüberschreitung und ich musste die Anwendung erneut starten. Der erste Ansatz bringt meiner Meinung nach Overhead mit sich und ist nicht sehr effizient. Tatsächlich gibt der erste Aufruf manchmal eine WebException zurück – ConnectFailure (I weiß nicht warum).

Ich habe einen Artikel gefunden (Web-Service-Probleme (Ein Licht am Ende des Tunnels?)), die das Zeitlimit überschreitet und die KeepAlive-Eigenschaft in der überschriebenen Funktion GetWebRequest auf „false“ setzt, ist hier der Code:

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

Die Frage ist, ob es möglich ist, das Webservice-Timeout dauerhaft zu verlängern, und schließlich: Wie implementieren Sie Ihre Webservices, um dieses Problem zu lösen?

War es hilfreich?

Lösung

Die von Visual Studio für Webservices generierten Klassen sind lediglich Proxys mit geringem Status, sodass ihre Erstellung recht kostengünstig ist.Ich würde mir keine Sorgen über den Speicherverbrauch machen.

Wenn Sie nach einer Möglichkeit suchen, die Webmethode in einer Zeile aufzurufen, können Sie einfach Folgendes tun:

new mywebservice().call()

Prost

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top