Webservice永远活着

时间:2008-08-20 20:07:34

标签: web-services

我经常以这种方式使用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 Service Woes (A light at the end of the tunnel?))超出了在重写函数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

问题是,是否可以永久延长网络服务时间,最后,您如何实施网络服务来处理这个问题?

1 个答案:

答案 0 :(得分:1)

Visual Studio为webservices生成的类只是几乎没有状态的代理,因此创建它们非常便宜。我不担心它们的内存消耗。

如果你想要的是一种在一行中调用webmethod的方法,你可以简单地这样做:

new mywebservice().call()

干杯