我猜测内部 HttpWebRequest 类是使用System.Net.Sockets.Socket
类实现的。
如果是,那么相当于设置其Timeout
属性是什么?设置其socket.SendTimeout属性,或者更确切地说是socket.ReceiveTimeout属性?
PS:请不要通过反编译来回答这个问题!
答案 0 :(得分:0)
使用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
显然,你在主机方面做了同样的事情。
答案 1 :(得分:0)
WebRequest.Timeout property documentation中的备注部分说:
Timeout属性仅影响使用GetResponse方法发出的同步请求。
这表示您正在接收数据,这意味着设置它类似于设置套接字的ReceiveTimeout
属性。
那就是说,后来的一句话说:
WebRequest类是一个抽象类。 WebRequest实例在运行时的实际行为由WebRequest.Create方法返回的后代类确定。有关默认值和异常的更多信息,请参阅后代类的文档,例如HttpWebRequest和FileWebRequest。
所以这真的取决于具体的课程。例如,HttpWebRequest.Timeout的行为有些不同。
对于HttpWebRequest
,当您调用Timeout
时,GetResponse
本质上是套接字接收缓冲区超时。但Timeout
也适用于GetRequestStream
,它没有真正的Socket模拟。请再次注意,这仅适用于同步请求。