2017-11-28 1 views
2

Ich habe einen Windows-Dienst, wo ich einen Wcf-Client-Endpunkt wie folgt aufrufen.Wie stelle ich Timeout-Eigenschaft auf Castle Windsor WcfClient

 Console.WriteLine("Invoking start..."); 
     using (var container = new WindsorContainer()) 
     { 
      container.AddFacility<WcfFacility>(); 
      container.Register(
       Component.For<IShoppingService>()       
        .AsWcfClient(new DefaultClientModel(
         WcfEndpoint 
          .ForContract<IShoppingService>() 
          .BoundTo(new NetTcpBinding(SecurityMode.None)) 
          .At("net.tcp://localhost:12123/shoppingService")))); 
      container.Resolve<IShoppingService>().Debug(); 
     } 
     Console.WriteLine("Invoking end..."); 

Ich möchte das Timeout des Aufrufs auf 10 Minuten für Debugging-Zwecke programmgesteuert erhöhen. Wie kann ich die Timeout-Eigenschaft auf dem Client wie ich normalerweise in den Bindungen Abschnitt in der Datei app.config wie so

<system.serviceModel> 
<bindings> 
    <netTcpBinding> 
    <binding name="longTimeOutLargeTcpBuffer" maxBufferSize="20000000" maxReceivedMessageSize="20000000" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00" closeTimeout="00:10:00"> 
     <readerQuotas maxArrayLength="20000000" maxBytesPerRead="20000000" maxStringContentLength="10000000" /> 
     <security mode="None" /> 
    </binding>   
    </netTcpBinding> 
</bindings> 

Prost

Antwort

1

Sie können festlegen Eigenschaften direkt auf der Bindung tun würde:

var timeout = new TimeSpan(0, 0, 10, 0); 
    var binding = new NetTcpBinding(SecurityMode.None) 
         { 
          CloseTimeout = timeout, 
          ReceiveTimeout = timeout, 
          SendTimeout = timeout, 
          OpenTimeout = timeout 
         }; 

dann:

.BoundTo(binding) 
Verwandte Themen