質問
私はよくこの方法で Web サービスを使用します
public void CallWebservice()
{
mywebservice web = new mywebservice();
web.call();
}
でも時々私はこれをします
private mywebservice web;
public Constructor()
{
web = new mywebservice();
}
public void CallWebservice()
{
web.call();
}
2 番目のアプローチは私にとっては非常に気に入っていますが、時々タイムアウトになり、アプリケーションを再度起動する必要がありました。最初のアプローチは、オーバーヘッドが発生すると思われ、あまり効率的ではありません。実際、最初の呼び出しで WebException - ConnectFailure (I) が返されることがあります。理由はわかりません)。
記事を見つけました(Web サービスの悩み (トンネルの先には光?))タイムアウトを超えた場合、オーバーライドされた関数 GetWebRequest で KeepAlive プロパティが false に変わります。コードは次のとおりです。
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
問題は、Web サービスのタイムアウトを永久に延長することは可能か、そして最後に、この問題に対処するために Web サービスをどのように実装するかということです。
解決
Visual Studio によって Web サービス用に生成されたクラスは、ほとんど状態を持たない単なるプロキシであるため、作成コストは非常に安くなります。メモリの消費については心配する必要はありません。
Web メソッドを 1 行で呼び出す方法を探している場合は、次のようにするだけです。
new mywebservice().call()
乾杯
所属していません StackOverflow