我经常这样使用webservice

public void CallWebservice()

{

  mywebservice web = new mywebservice();

  web.call();

}

但有时我会这样做

private mywebservice web;

public Constructor()
{

  web = new mywebservice();

}

public void CallWebservice()
{

  web.call();

}

第二种方法我很喜欢,但有时会超时,我不得不重新启动应用程序,第一种方法我认为它带来了开销,而且效率不是很高,事实上,有时第一次调用会返回一个WebException - ConnectFailure(我不知道为什么)。

我找到一篇文章(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 服务生成的类只是具有很少状态的代理,因此创建它们的成本非常低。我不会担心它们的内存消耗。

如果您正在寻找一种在一行中调用 webmethod 的方法,您可以简单地执行以下操作:

new mywebservice().call()

干杯

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top