5 ответов:
вы имеете в виду на стороне сервера или на стороне клиента?
для клиента, вы хотели бы настроить sendTimeout атрибут элемента привязки. Для службы, вы хотели бы настроить receiveTimeout атрибут привязки elemnent.
<system.serviceModel> <bindings> <netTcpBinding> <binding name="longTimeoutBinding" receiveTimeout="00:10:00" sendTimeout="00:10:00"> <security mode="None"/> </binding> </netTcpBinding> </bindings> <services> <service name="longTimeoutService" behaviorConfiguration="longTimeoutBehavior"> <endpoint address="net.tcp://localhost/longtimeout/" binding="netTcpBinding" bindingConfiguration="longTimeoutBinding" /> </service> ....конечно, вы должны сопоставить желаемую конечную точку с этой конкретной привязкой.
в меню Сервис в Visual Studio 2008 (или 2005, если у вас установлен правильный материал WCF) есть параметры, называемые "редактор конфигурации службы WCF".
оттуда вы можете изменить параметры привязки как для клиента, так и для служб, один из этих параметров будет для тайм-аутов.
разные тайм-ауты означают разные вещи. Когда вы работаете с клиентом.. вы, вероятно, смотрите в основном на SendTimeout-проверьте эту ссылку-замечательное и актуальное объяснение: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/
Вы можете выбрать два способа:
1) по коду в клиенте
public static void Main() { Uri baseAddress = new Uri("http://localhost/MyServer/MyService"); try { ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService)); WSHttpBinding binding = new WSHttpBinding(); binding.OpenTimeout = new TimeSpan(0, 10, 0); binding.CloseTimeout = new TimeSpan(0, 10, 0); binding.SendTimeout = new TimeSpan(0, 10, 0); binding.ReceiveTimeout = new TimeSpan(0, 10, 0); serviceHost.AddServiceEndpoint("ICalculator", binding, baseAddress); serviceHost.Open(); // The service can now be accessed. Console.WriteLine("The service is ready."); Console.WriteLine("Press <ENTER> to terminate service."); Console.WriteLine(); Console.ReadLine(); } catch (CommunicationException ex) { // Handle exception ... } }2) по WebConfig в веб-сервере
<configuration> <system.serviceModel> <bindings> <wsHttpBinding> <binding openTimeout="00:10:00" closeTimeout="00:10:00" sendTimeout="00:10:00" receiveTimeout="00:10:00"> </binding> </wsHttpBinding> </bindings> </system.serviceModel>для более детального просмотра официальной документации
в дополнение к таймаутам привязки (которые находятся в
Timespans), Вам также может понадобиться это. Это всего за несколько секунд.<system.web> <httpRuntime executionTimeout="600"/><!-- = 10 minutes -->
Comments