如何使用此WCF联系人将receiveTimeout和sendTimeout设置为无穷大?

Rya*_*n R 18 wcf wcf-binding

我的主机中有以下app.config:

<services>
  <service name="DCC_Service.DCCService" behaviorConfiguration="serviceBehavior">
    <endpoint binding="netNamedPipeBinding" contract="DCC_Service.IDCCService" address="DCCService" />
    <endpoint binding="mexNamedPipeBinding" contract="IMetadataExchange" address="mex" />
    <host>
      <baseAddresses>
        <add baseAddress="net.pipe://localhost/"/>
      </baseAddresses>
    </host>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="serviceBehavior">
      <serviceMetadata httpGetEnabled="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)

如何将netNamedPipeBinding超时设置为无限又名Timespan.MaxValue

Mat*_*vis 24

使用infinite的各种超时值-关闭,开放,接收和发送.您可以在绑定配置中指定这些超时.

<bindings>
    <netNamedPipeBinding>
        <binding name="mybinding" closeTimeout="infinite" openTimeout="infinite"
            receiveTimeout="infinite" sendTimeout="infinite" />
    </netNamedPipeBinding>
</bindings>
Run Code Online (Sandbox Code Playgroud)

bindings部分与servicesbehaviors部分处于同一级别.唯一剩下的就是引用服务端点中的绑定配置.

<services>
  <service name="DCC_Service.DCCService" behaviorConfiguration="serviceBehavior">
    <endpoint binding="netNamedPipeBinding"
        contract="DCC_Service.IDCCService"
        address="DCCService"
        bindingConfiguration="mybinding"/>         <!-- SEE THIS LINE -->
    <endpoint binding="mexNamedPipeBinding"
        contract="IMetadataExchange"
        address="mex" />
    <host>
      <baseAddresses>
        <add baseAddress="net.pipe://localhost/"/>
      </baseAddresses>
    </host>
  </service>
</services>

<behaviors>
  <serviceBehaviors>
    <behavior name="serviceBehavior">
      <serviceMetadata httpGetEnabled="false"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
Run Code Online (Sandbox Code Playgroud)

我不记得具体(我现在没有时间看),但你可能不得不把这些东西放在你的客户端配置中.

  • 我相信这是一个Visual Studio工件.在运行时使用时,可以正确处理"无限"字符串.请参阅此处的答案:http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/46f9f3ad-da26-493d-9743-895ee9bd4c61/ (6认同)
  • 谢谢马特.我将以下内容添加到我的客户端:`NetNamedPipeBinding binding = new NetNamedPipeBinding(); binding.SendTimeout = TimeSpan.MaxValue; binding.ReceiveTimeout = TimeSpan.MaxValue;`然后在实例化我的双工通道工厂时使用该绑定. (3认同)

小智 8

将其设置为最大时间跨度,即10675199.02:48:05.4775807

sendTimeout="10675199.02:48:05.4775807"
Run Code Online (Sandbox Code Playgroud)


Har*_*ari 5

您也可以像下面这样给出最长时间

{

            binding.CloseTimeout = TimeSpan.MaxValue;

            binding.OpenTimeout = TimeSpan.MaxValue;

            binding.ReceiveTimeout = TimeSpan.MaxValue;

            binding.SendTimeout = TimeSpan.MaxValue;
Run Code Online (Sandbox Code Playgroud)

}

  • 您应该知道`{}`是代码的一部分,我已编辑放入代码块.实际上这并没有改善这个问题,但是格式良好的代码对所有开发人员来说都是一种很好的做法. (2认同)