質問

私はよくこの方法で 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()

乾杯

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top