我经常这样使用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
问题是,是否有可能永远延长 web 服务的超时时间,最后,你如何实现你的 web 服务来处理这个问题?