Как увеличить время ожидания веб-службы в asp.net?
Я создал один веб-сервис, который имеет тип asmx. И я использую свой веб-сервис в приложении .net Windows.
Веб-метод от веб-службы получает преобразование байтового массива объекта & объект моего класса, имеющий разные атрибуты, в который я добавляю один XML файл в виде строки. Когда моя строка, содержащая данные XML, увеличивается, она выдает ошибку "Тайм-аут" при отправке данных в веб-службу.
Как увеличить время ожидания веб-сервиса?
Ответы
Ответ 1
Вы можете сделать это по-разному:
- Установка таймаута в вызывающей стороне веб-службы из кода (не уверен на 100%, но я думаю, что видел, что это сделано);
- Установка времени ожидания в конструкторе прокси-сервера веб-службы в веб-ссылках;
- Установка времени ожидания на стороне сервера, web.config приложения веб-службы.
смотрите здесь для получения более подробной информации о втором случае:
http://msdn.microsoft.com/en-us/library/ff647786.aspx#scalenetchapt10_topic14
а вот подробности о последнем случае:
Как увеличить время ожидания запроса веб-службы?
Ответ 2
1 - Вы можете установить тайм-аут в своем приложении:
var client = new YourServiceReference.YourServiceClass();
client.Timeout = 60; // or -1 for infinite
Это в миллисекундах.
2 - Также вы можете увеличить значение тайм-аута в теге httpruntime в web/app.config:
<configuration>
<system.web>
<httpRuntime executionTimeout="<<**seconds**>>" />
...
</system.web>
</configuration>
Для приложений ASP.NET значение свойства Timeout всегда должно быть меньше атрибута executeTimeout элемента httpRuntime в Machine.config. Значение по умолчанию executeTimeout составляет 90 секунд. Это свойство определяет время, в течение которого ASP.NET продолжает обрабатывать запрос, прежде чем он выдаст ошибку тайм-аута. Значение executeTimeout должно быть временем ожидания прокси-сервера плюс время обработки страницы и время буфера для очередей. - Источник
Ответ 3
В файле app.config(или .exe.config)
вы можете добавить или изменить свойство "receiveTimeout" в привязке.
как это
<binding name="WebServiceName" receiveTimeout="24:00:00" />