我猜測,內部HttpWebRequest類是使用System.Net.Sockets.Socket
類實現的。HttpWebRequest.Timeout SendTimeout或ReceiveTimeout?
如果是,那麼相當於設置其Timeout
屬性?設置其socket.SendTimeout屬性,或者說socket.ReceiveTimeout屬性?
PS:請不要通過反編譯代碼來回答這個問題!
我猜測,內部HttpWebRequest類是使用System.Net.Sockets.Socket
類實現的。HttpWebRequest.Timeout SendTimeout或ReceiveTimeout?
如果是,那麼相當於設置其Timeout
屬性?設置其socket.SendTimeout屬性,或者說socket.ReceiveTimeout屬性?
PS:請不要通過反編譯代碼來回答這個問題!
使用WCF請求,可以在配置請求綁定時設置Send或ReceiveTimout。
還有一堆根據不同的綁定類型的你在做什麼(TCP,HTTP/S,管道等),但一般設置超時看起來是這樣的:
Dim xbinding As System.ServiceModel.NetTcpBinding = _
New System.ServiceModel.NetTcpBinding
With xbinding
.SendTimeout = New TimeSpan(0, 10, 0)
.ReceiveTimeout = New TimeSpan(0, 10, 0) ' ten minutes
' you can also set your message limits and such in here.
End With
顯然,你已經在主機端做了同樣的事情。
在WebRequest.Timeout property documentation備註部分說:
超時屬性隻影響與GetResponse的方法制作同步請求。
這將表明您正在接收數據,這意味着將其設置爲設置套接字的ReceiveTimeout
屬性。
也就是說,以後的話指出:
WebRequest類是一個抽象類。 WebRequest實例在運行時的實際行爲由WebRequest.Create方法返回的後代類確定。有關缺省值和異常的更多信息,請參閱後代類的文檔,例如HttpWebRequest和FileWebRequest。
所以它真的取決於具體的類。例如,HttpWebRequest.Timeout的行爲有所不同。
在HttpWebRequest
的情況下,當您撥打GetResponse
時,Timeout
本質上是套接字接收緩衝區超時。但Timeout
也適用於GetRequestStream
,它沒有真正的Socket模擬。再次請注意,這僅適用於同步請求。
對不起,我的意思是HttpWebRequest.TimeOut,我會改變我的問題,好嗎? – knocte
我在哪裏談論WCF? – knocte
對不起,我對wcf開發很感興趣,HTTPWebRequests是我設置客戶端事物的方式。希望有關超時的一些用處。 – Brian