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