2008-08-20 69 views
1

我经常使用Web服务这样web服务永远活着

public void CallWebservice() 

{ 

    mywebservice web = new mywebservice(); 

    web.call(); 

} 

,但有时我这样做

private mywebservice web; 

public Constructor() 
{ 

    web = new mywebservice(); 

} 

public void CallWebservice() 
{ 

    web.call(); 

} 

第二种方法并不喜欢我,但有时超时,我不得不启动应用程序再次,我认为它带来开销的第一个,它不是非常有效的,事实上,有时第一次调用返回WebException - ConnectFailure(我不知道为什么)。

我发现,超过转向KeepAlive属性设置为false在被覆盖的功能GetWebRequest,这里的时候出文章(Web Service Woes (A light at the end of the tunnel?))是代码:

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 

的问题是,是否有可能永远延长webservice超时,最后,你如何实现你的web服务来处理这个问题?

回答

1

Visual Studio为webservices生成的类只是代理状态很少,所以创建它们非常便宜。我不会担心他们的内存消耗。

如果你正在寻找一种方法来调用一个行的WebMethod你可以简单地这样做:

new mywebservice().call() 

干杯