HttpWebRequest.超时一个SendTimeout或ReceiveTimeout



我猜内部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类似物。再次注意,这只适用于同步的请求。

最新更新