Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为WCF webservice设置DNS超时_Wcf_C# 4.0 - Fatal编程技术网

为WCF webservice设置DNS超时

为WCF webservice设置DNS超时,wcf,c#-4.0,Wcf,C# 4.0,我正在使用Visual Studio 2012生成winforms客户端使用的web服务。我使用“添加服务引用”创建了客户端。这个winforms客户端是.net c#旧VB 6应用程序的替代品。以前,在VB应用程序中,存在超时值的外部设置,包括以下内容: DNS超时 连接超时 请求超时 当端点主机地址是强制DNS查找的FQDN时,DNS超时将起作用。此处的超时值将限制等待DNS解析的时间量 连接超时将限制winforms客户端等待建立到服务器的http连接的时间量。DNS查找会成功 请求超时将

我正在使用Visual Studio 2012生成winforms客户端使用的web服务。我使用“添加服务引用”创建了客户端。这个winforms客户端是.net c#旧VB 6应用程序的替代品。以前,在VB应用程序中,存在超时值的外部设置,包括以下内容:

DNS超时 连接超时 请求超时

当端点主机地址是强制DNS查找的FQDN时,DNS超时将起作用。此处的超时值将限制等待DNS解析的时间量

连接超时将限制winforms客户端等待建立到服务器的http连接的时间量。DNS查找会成功

请求超时将限制http连接成功后等待请求返回的时间量。如果长时间运行的查询在web服务调用启动后花费的时间太长,这将起作用

在.NET4.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>

这些能映射到我需要的还是真的不重要


谢谢

WCF绑定的
OpenTimeout
设置是针对打开通道时等待的时间长度,因此我相信这将类似于以前的连接超时。这应该很快,所以您通常只希望指定几秒钟的等待时间(30或更少),而不是12小时

WCF
CloseTimeout
用于发送关闭通道消息时,这是等待确认的时间。在您的旧体系结构中,这可能没有等效项。同样,这应该是快速的,应该只需要几秒钟

WCF
SendTimeout
(对于客户端配置)基本上涵盖了客户端向服务发送消息和接收回响应(如果有)的时间。这将对应于旧的请求超时。如果您的服务器需要一段时间来处理事情,这可能需要几分钟

WCF
SendTimeout
(用于服务器配置)用于您需要回调的时间,以便服务器知道接收到回调的确认等待多长时间

WCF
ReceiveTimeout
不适用于客户端配置。对于服务器端配置,ServiceFramework层使用ReceiveTimeout初始化会话空闲超时(老实说,我真的不知道这是什么)

此MSDN讨论可能会有所帮助


最后,除非您确实有长时间运行的请求,否则拥有非常大的超时值不是一个好主意。这是因为如果客户端未正确关闭连接,服务器上的可用资源可能会耗尽。

DNS超时可能是OpenTime的一部分。我想这很好。我无法控制DNS查找,因为我无法控制这些服务器。SendTimeout是主要的,我可以将它设置得很低并触发超时异常。OpenTime我也设置得很低,但从未触发超时异常。这也是我的经历。我用30秒来表示OpenTimeout,但我可能应该用5秒或10秒,因为我读过的文献说,在像我这样的封闭环境中,通道的打开和关闭应该更像一秒或更少。但我宁愿给自己一点缓冲。