Как увеличить время ожидания по умолчанию до более 1 минуты в службе WCF?
Увеличение значения тайм-аута в службе WCF
Ответ 1
Вы имеете в виду серверную или клиентскую сторону?
Для клиента вы хотите настроить атрибут sendTimeout элемента привязки. Для службы вы хотите настроить атрибут receiveTimeout элемента привязки.
<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>
....
Конечно, вам нужно сопоставить желаемую конечную точку с этим конкретным привязкой.
Ответ 2
В меню "Инструменты" в Visual Studio 2008 (или 2005, если у вас есть права на WCF файл), есть параметры, называемые "Редактор конфигурации службы WCF".
Оттуда вы можете изменить параметры привязки как для клиента, так и для служб, один из этих вариантов будет использоваться для тайм-аутов.
Ответ 3
Различные тайм-ауты означают разные вещи. Когда вы работаете над клиентом, вы, вероятно, смотрите в основном на SendTimeout - проверьте эту ссылку - замечательное и соответствующее объяснение: http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/84551e45-19a2-4d0d-bcc0-516a4041943d/
Ответ 4
Вы можете выбрать два способа:
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>
Подробнее см. официальную документацию