我猜内部HttpWebRequest类是使用System.Net.Sockets.Socket
类实现的。
如果是,那么设置它的Timeout
属性的等价物是什么?设置它的套接字。SendTimeout属性,或者套接字。ReceiveTimeout 财产吗?
PS:请不要通过反编译代码来回答这个问题!
对于WCF请求,您可以在配置请求绑定时设置Send或receivetimeout。
有一堆不同的绑定类型取决于你在做什么(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中的comments部分。超时属性文档说:
Timeout属性只影响使用GetResponse方法发出的同步请求。
这将表明你正在接收数据,这意味着设置它类似于设置套接字的ReceiveTimeout
属性。
话虽如此,但后面的注释说:
WebRequest类是一个抽象类。WebRequest实例在运行时的实际行为由WebRequest返回的后代类决定。创建方法。有关默认值和异常的更多信息,请参阅后代类的文档,例如HttpWebRequest和FileWebRequest。
这取决于具体的类。HttpWebRequest。例如,Timeout有一些不同的行为。
在HttpWebRequest
的情况下,当您调用GetResponse
时,Timeout
本质上是套接字接收缓冲区超时。但是Timeout
也适用于GetRequestStream
,它没有真正的Socket类似物。再次注意,这只适用于同步的请求。