我正在使用Visual Studio 2012生成供winforms客户端使用的Web服务。我使用"添加服务引用"创建了客户端。这个winforms客户端是旧的VB 6应用程序的.net c#替代品。以前,在VB应用程序中有超时值的外部设置,包括以下内容:
DNS超时 连接超时 请求超时
当端点主机地址是强制DNS查找的FQDN时,DNS超时将起作用。此处的超时值会限制等待DNS解析的时间。
连接超时会限制winforms客户端等待与服务器建立http连接的时间。 DNS查找本来是成功的。
请求超时会限制在http连接成功后等待请求返回的时间。如果在启动Web服务调用后长时间运行的查询花费的时间太长,这将会发挥作用。
在.net 4.0中是否有类似的内容。我希望能够在app.config中配置它。我知道下面的内容。
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeout"
openTimeout="12:00:00"
receiveTimeout="12:00:00" closeTimeout="12:00:00"
sendTimeout="12:00:00">
</binding>
</basicHttpBinding>
这些可以映射到我需要的那些,还是真的无关紧要?
感谢
答案 0 :(得分:1)
WCF绑定的OpenTimeout
设置是打开频道时等待的时间长度,所以我相信这与旧的连接超时类似。这应该很快,所以你通常只想指定几秒钟等待(30或更少),而不是12小时。
WCF CloseTimeout
用于发送关闭通道消息,这是等待确认的时间。这可能与您的旧架构中没有相同之处。同样,这应该很快,只需要几秒钟。
WCF SendTimeout
(用于客户端配置)实质上涵盖了客户端将消息发送到服务以及接收响应(如果有)的时间。这将对应于您的旧请求超时。如果您的服务器需要一段时间来处理事情,这可能需要几分钟。
WCF SendTimeout
(用于服务器配置)用于何时需要回调,以便服务器知道等待确认收到其回调的时间。
WCF ReceiveTimeout
不适用于客户端配置。对于服务器端配置,ServiceFramework层使用ReceiveTimeout初始化会话空闲超时(说实话我真的不知道那是什么)
作为最后一点,除非你肯定有长时间运行的请求,否则拥有非常大的超时值并不是一个好主意。这是因为如果客户端未正确关闭连接,则可能会耗尽服务器上的可用资源。