Web服务永远活着

时间:2020-03-05 18:41:16  来源:igfitidea点击:

我经常以这种方式使用网络服务

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()

干杯