2008-08-20 90 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() 

乾杯