1

私はよくこのようにWebサービスを使用します

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

しかし、時々私はこれをします

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

2 番目のアプローチは非常に気に入っていますが、タイムアウトになることがあり、アプリケーションを再起動する必要がありました。最初のアプローチではオーバーヘッドが発生し、あまり効率的ではないと思います。理由がわからない)。

オーバーライドされた関数 GetWebRequest で KeepAlive プロパティを false に変更するタイムアウトを超える記事 ( Web Service Woes (A light at the end of the tunnel?) ) を見つけました。コードは次のとおりです。

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 サービスをどのように実装しますか?

4

1 に答える 1

1

Web サービス用に Visual Studio によって生成されたクラスは、状態がほとんどない単なるプロキシであるため、それらの作成は非常に安価です。それらのメモリ消費については心配しません。

探しているものが webmethod を 1 行で呼び出す方法である場合は、次のように簡単に実行できます。

new mywebservice().call()

乾杯

于 2008-08-20T20:32:34.777 に答える